在fft海面模拟中,需要生成服从标准生成分布的随机数(见:杨超:fft海面模拟(一))。
我们知道数构造服从目标分布的随机数发生器,一般是采用反函数法:对目标分布的CDF求反函数,则当其输入服从U(0,1)的随机数时,就返回服从目标分布的随机数。(参考pbrt第三版第13章第3节)。
不过由于正态分布的CDF无法用初等函数表达,所以上面方法走不通,需另辟蹊径。
通常使用称为Box-Muller转换(Box-Muller transform)的方法来生成服从标准正态分布的随机数(对儿)。
一,Box-Muller转换的基本形式(basic form)
设U1,U2相互独立,均服从分布U(0,1)
X=
Y=
则X、Y相互独立且均服从标准正态分布。
证明:
U1,U2~U(0,1) 所以
。
因为
,根据一元随机变量函数分布(见:杨超:pbrt注解:transforming between distributions)有:
因为
,同样,根据一元随机变量函数分布,有:
(因为
,所以