logo头像
Snippet 博客主题

java产生服从正态分布的随机数

正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),
最早由A.棣莫弗在求二项分布的渐近公式中得到。
C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。
是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。

正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为X~N(μ,σ^2)。
其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

JDK中Random类中的nextGaussian()方法,可以产生服从标准正态分布的随机数。即 X~N(0,1);

如果我们想产生自定义的正态分布呢 X~N(μ,b) b=σ^2;
可以用

Math.sqrt(b)*random.nextGaussian() + μ;

下面是10000测试的分布结果

Random r = new Random();
for (int i = 0; i < 10000; i++) {
    r.nextGaussian() * Math.sqrt(10) + 53;
}

微信打赏

赞赏是不耍流氓的鼓励