Random.nextgaussian() 能否从具有不同均值和标准差的分布中抽取值?

2022-09-01 20:15:31

这是一个结合Java和基础数学的问题。来自Random.nextGaussian()的文档指出,它从均值为0且标准差为1的正态分布中采样。如果我想从具有不同均值和方差的正态分布中取样,该怎么办?


答案 1

简短的回答是

Random r = new Random();
double mySample = r.nextGaussian()*desiredStandardDeviation+desiredMean;

例如,这个答案在这里给出:http://www.javamex.com/tutorials/random_numbers/gaussian_distribution_2.shtml

我真的不明白为什么这有效,但是在研究了一下之后,我想我弄清楚了。采样点的均值为0,标准差为1;这意味着原始样本也是它自己的 z 得分 ( https://en.wikipedia.org/wiki/Standard_score )。引用维基百科的话,“z的绝对值表示原始分数和总体平均值之间的距离,以标准差为单位”。公式为 z=(x-mean)/stdev,因此默认值为 z=x。如果我们想保留样本的 z 得分,但更改均值和 stdev,我们会怎么做?

z*stdev + mean = x',其中 z=x,x' 表示具有所需均值和标准差的分布样本。


答案 2

推荐