上QQ阅读APP看书,第一时间看更新
3.3.5 Box-Muller算法
设(X,Y)是一对相互独立的服从正态分布N(0,1)的随机变量,则有概率密度函数:
令x=Rcosθ,y=Rsinθ,其中,θ∈[0,2π],则R有分布函数:
令,则分布函数的反函数得:。
如果U1服从均匀分布U(0,1),则R可由模拟生成(1-U1)也为均匀分布,可被U1代替)。令θ为2πU2,U2服从均匀分布U(0,1)。得:
X和Y均服从正态分布。
用Box Muller方法来生成服从正态分布的随机数是十分快捷方便的,是通过[0,1]之间的均匀分布和单位圆来生成正态分布的一种算法。这种算法虽然不需任何估计,但是有21%的拒绝率,且中间包括对数、平方根运算,所以效率并不高。
图3-6 创建正态随机数直方图
例3-20: 利用Box Muller创建正态随机数。
解: MATLAB程序如下。
运行结果如图3-7所示。
图3-7 创建正态随机数分布图