生成Java中遵循正态分布的数字
问题描述:
我想生成数字(随机),使得数字遵循给定均值和方差的正态分布。我怎样才能做到这一点?生成Java中遵循正态分布的数字
如果您可以在Java环境中使用它会更好。 有人可能会在这些答案中寻找帮助:但它们并不精确。 Generate random numbers following a normal distribution in C/C++
答
无耻一派,摘自:http://www.javapractices.com/topic/TopicAction.do?Id=62
的“魔力” happend内Random.nextGaussian()
import java.util.Random;
/**
Generate pseudo-random floating point values, with an
approximately Gaussian (normal) distribution.
Many physical measurements have an approximately Gaussian
distribution; this provides a way of simulating such values.
*/
public final class RandomGaussian {
public static void main(String... aArgs){
RandomGaussian gaussian = new RandomGaussian();
double MEAN = 100.0f;
double VARIANCE = 5.0f;
for (int idx = 1; idx <= 10; ++idx){
log("Generated : " + gaussian.getGaussian(MEAN, VARIANCE));
}
}
private Random fRandom = new Random();
private double getGaussian(double aMean, double aVariance){
return aMean + fRandom.nextGaussian() * aVariance;
}
private static void log(Object aMsg){
System.out.println(String.valueOf(aMsg));
}
}
有一些答案的链接的问题的实际代码,加上一个维基百科的链接带有实际代码的页面。由于代码的工作原理和转换为Java的微不足道,我没有看到什么是“不精确”。 – rici 2015-04-01 15:59:42
[在C/C++中以正态分布生成随机数]可能的重复(http://stackoverflow.com/questions/2325472/generate-random-numbers-follow-a-normal-distribution-in-cc) – rici 2015-04-01 16:00:08
使用Java的内建'nextGaussian()'(来自'java.util.Random'),将其乘以方差的平方根并添加平均值。 – pjs 2015-04-01 17:37:44