use*_*269 1 java random normal-distribution
可能重复:
Random.nextGaussian()的问题
我正在开发小型java应用程序来进行随机正态分布并给出50个值.我使用mean = 0.0和std = 1.0,但是我得到的问题是结果超出界限,有些值小于0.0而且超过1.0,有人可以帮助我吗?
以下是我使用的代码:
public static void main(String[] args) {
double[] list = new double[50];
double mean = 0.0, std = 1.0;
Random rng = new Random();
// to generate 50 values random normal distribution
for(int i = 0;i<list.length;i++) {
list[i] = mean + std * rng.nextGaussian();
}
// to print the generated values from the list
for(int i = 0;i<list.length;i++)
{
System.out.println(list[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
nextGaussian()返回下一个伪随机,高斯("正常")分布的双值,其平均值为0.0,标准偏差为1.0,该随机数生成器的序列.(http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#nextGaussian())
所以std * rng.nextGaussian();
应该是std * (1 + rng.nextGaussian())/2
;
但是,结果可能不是你想要的高斯,你需要调整平均值和std与不同a
和b
in(a + rng.nextGaussian())/b