java生成正态分布方法

转载 2012年03月23日 17:46:54

//正态分布函数,从三种生成法中随机选择一种,更加随机
public class Normal {
public Normal() {
}


public double normalRandom1(double a, double b) {//注意这里的b是方差,等于标准差的平方
double temp = 12;
double x = 0;
for (int i = 0; i < temp; i++)
x = x + (Math.random());
x = (x - temp / 2) / (Math.sqrt(temp / 12));
x = a + x * Math.sqrt(b); return x;
}

public double normalRandom2(double a, double b) {
double pi = 3.1415926535;
double r1 = Math.random();
Math.random();
Math.random();
Math.random();
Math.random();
Math.random();
Math.random();
Math.random();
double r2 = Math.random();
double u = Math.sqrt((-2) * Math.log(r1)) * Math.cos(2 * pi * r2);
double z = a + u * Math.sqrt(b); return (z);
}

public double normalRandom3(double a, double b) {
double f = 0;
double c0 = 2.515517, c1 = 0.802853, c2 = 0.010328;
double d1 = 1.432788, d2 = 0.189269, d3 = 0.001308; double w;
double r = Math.random();
if (r <= 0.5) w = r;
else w = 1 - r;
if ((r - 0.5) > 0) f = 1;
else if ((r - 0.5) < 0) f = -1;
double y = Math.sqrt((-2) * Math.log(w));
double x = f * (y - (c0 + c1 * y + c2 * y * y) / (1 + d1 * y + d2 * y * y + d3 * y * y * y));
double z = a + x * Math.sqrt(b); return (z);
}

//然后判断用哪个正态分布随机数函数的方法如下:
public double normalRandom(double a, double b) {
double r = Math.random() * 9;
switch ((int) r / 3) {
case 0: return normalRandom1(a, b);
case 1: return normalRandom2(a, b);
case 2: return normalRandom3(a, b);
}
return 0.0;
}
}

相关文章推荐

用正态分布(高斯函数)为邻居分配权重

在计算完最近邻居之后,在进行推荐的时候,需要对最近邻居进行权重赋值,一避免选择了距离比较远的邻居。    如果采取邻居的倒数,如果距离是0的话,则权重就会无限大,对程序造成干扰。这时候,根据正态函数...

java曲线拟合commons-math3-3.6.1函数

需要的jar 包 commons-math3-3.6.1.jar jar包下载地址 API参考地址示例代码如下package cn.mingtong.testdistance;import o...

java实现标准正态分布

import java.util.*;public class zheng0_1 { public static void main(String[] args) { double zhengtai...

java实现正态分布函数( commons-math-3.3 )

1、 计算过程为:提取报表原始数据——>按上述公式计算财务比率值——>按上述分组规则对比率值进行分组——>对各组赋相应的值——>基于各变量分组赋值和权重,按公式计算定量模型得分S1(公式如下)    ...
  • sarck3
  • sarck3
  • 2014-09-15 12:12
  • 5771

java实现标准正态分布

[java] view plaincopy import java.util.*;   public class zheng0_1 {      ...

正态分布随机数生成法(java版)

要编程得到服从均匀分布的伪随机数是容易的。C语言、Java语言等都提供了相应的函数。但是要想生成服从正态分布的随机数就没那么容易了。         得到服从正态分布的随机数的基本思想是先得到服...

实现正态分布的一种方法

  • 2011-10-24 19:35
  • 181KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)