box-muller
产生随机数的一种方法。
Box-Muller 算法隐含的原理非常深奥,但结果却是相当简单。
如果在 (0,1] 值域内有两个一致的随机数字 U1 和 U2,
可以使用以下两个等式中的任一个算出一个正态分布的随机数字 Z:
Z = R * cos( θ )
或
Z = R * sin( θ )
其中,
R = sqrt(-2 * ln(U2))
θ = 2 * π * U1
正态值 Z 有一个等于 0 的平均值和一个等于 1 的标准偏差,可使用以下等式将 Z 映射到一个平均值为 m、标准偏差为 sd 的统计量 X:
X = m + (Z * sd)