1、简单版
2、如果不想自己写的话,Java util库中早就有提供好的标准正态分布的随机函数:
3、库里只有标准正态分布N(0,1),那么想得到满足N(u,v)的随机数怎么办呢,利用N(0,1)有个近似的简单算法:
4、有人可能会怀疑上面 Math.sqrt(v)*ran蟠校盯昂dom.nextGaussian()+u 这个公式到底靠谱吗?我们先来证明下吧:
5、同时,我们在Matlab里面验证一下,附上Matlab代码:
6、来看结果:
7、进阶版
8、Box–Muller算法Box–Mul盟敢势袂ler算法是由 George E. P. Box 与 Mervin E. Muller 在1958年提出的,证明过程很复杂这里就不提了,但是公式却很简单,看公式:
9、这个公式主要利用了两个均匀分布产生的随机数U1,U2。Z0和Z1实现的效果是一致的,我们在代码中实现一下:
10、还是非常简单的。那么真实的效果又如何呢,在Matlab里面验证一下:
11、怎么样不错吧