Box-Muller,一般是要得到服从正态分布的随机数,基本思想是先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。
定理(Box-Muller变换):如果随机变量U1和U2是IID的,且U1,U2 ~Uniform[0, 1],则
Z0和Z1独立且服从标准正态分布。
如何来证明这个定理呢?这需要用到一些微积分中的知识,首先回忆一下二重积分化为极坐标下累次积分的方法:
假设现在有两个独立的标准正态分布 X~N(0,1) 和 Y~N(0,1),由于二者相互独立,则联合概率密度函数为
做极坐标变换,则 x=Rcosθ,y=Rsinθ,则有
则
由此可得与
的分布函数
与
你可以看到这个结果可以看成是两个概率分布的密度函数的乘积,服从
上的均匀分布。令,将其转换为标准均匀分布则有
。
另外一个的密度函数为
则其累计分布函数CDF为
这个CDF函数的反函数可以写成
根据逆变换采样的原理,如果我们有个PDF为P(R)的分布,那么对齐CDF的反函数进行均匀采样所得的样本分布将符合P(R)的分布。即,当z服从上均匀分布时,
的分布函数为
。因此可以选取两个服从
上均匀分布的随机变量U1,U2,使得
而如果 u 是均匀分布的,那么 U1 = 1-u 也将是均匀分布的,于是用 U1 替换1-u,最后可得
结论得证。最后我们来总结一下利用Box-Muller变换生成符合高斯分布的随机数的方法: