nextGaussian()起什么作用?nextGaussian()方法Returns:
the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence.javadoc中做上述描述,生成的数值符合均值为0标准差为1的高斯/正态分布,那么,如果循环输出nextGaussian()值的话,这些值间有什么联系吗?如下代码:
Random r = new Random();
for(int i=0; i<100; i++)
System.out.println(r.nextGaussian());我把打印出来的100个值copy到excel中做折线图,发现图像并不符合正态/高斯分布,而且,里面有很负数,均值为0标准差为1的高斯/正态分布函数是得不出来负数的。所以,我搞不懂nextGaussian()方法到底是做什么用的。我想做的事情是得到一组符合高斯/正态分布的随机数,是否可以利用nextGaussian方法,高手请指教,谢谢!
the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence.javadoc中做上述描述,生成的数值符合均值为0标准差为1的高斯/正态分布,那么,如果循环输出nextGaussian()值的话,这些值间有什么联系吗?如下代码:
Random r = new Random();
for(int i=0; i<100; i++)
System.out.println(r.nextGaussian());我把打印出来的100个值copy到excel中做折线图,发现图像并不符合正态/高斯分布,而且,里面有很负数,均值为0标准差为1的高斯/正态分布函数是得不出来负数的。所以,我搞不懂nextGaussian()方法到底是做什么用的。我想做的事情是得到一组符合高斯/正态分布的随机数,是否可以利用nextGaussian方法,高手请指教,谢谢!
if (haveNextNextGaussian) {
haveNextNextGaussian = false;
return nextNextGaussian;
} else {
double v1, v2, s;
do {
v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0
v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0
s = v1 * v1 + v2 * v2;
} while (s >= 1 || s == 0);
double multiplier = Math.sqrt(-2 * Math.log(s)/s);
nextNextGaussian = v2 * multiplier;
haveNextNextGaussian = true;
return v1 * multiplier;
}
}
每用过 但是刚刚查到 这是该函数的实现代码 LZ参考一下
import java.util.Random;
import java.util.TreeMap;public class Test {
public static void main(String[] args) throws IOException {
Map<Double, Integer> map = new TreeMap<Double, Integer>();
Random r = new Random();
for(int i=0; i<10000; i++){
double gau = r.nextGaussian();
double gauKey = Math.round(gau*10)/10.0;
int n = (map.get(gauKey)==null)?0:map.get(gauKey);
map.put(gauKey, n+1);
}
for(Map.Entry entry : map.entrySet()) {
System.out.printf("%f %d%n", entry.getKey(), entry.getValue());
}
}
}这段程序的输出结果是根据 getGaussian() 以 0.1 区间分组的输出,把输出以空格为间隔粘到 Excel 中,在 Excel 中算出第二列数值的比重,再使用“XY散点图”就可以生成图形了。