![MATLAB 2020数学计算从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/840/43806840/b_43806840.jpg)
上QQ阅读APP看书,第一时间看更新
3.3.5 Box-Muller算法
设(X,Y)是一对相互独立的服从正态分布N(0,1)的随机变量,则有概率密度函数:
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/98_04.jpg?sign=1739411429-YHADqpAVg7dtFUCaeMhqdxORpzsMIjdD-0-2d5217916202721922d2643b6d6b43a3)
令x=Rcosθ,y=Rsinθ,其中,θ∈[0,2π],则R有分布函数:
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/98_05.jpg?sign=1739411429-HflTfkfFD58dgge3FgeEuaPpvfbqE9Gd-0-4eb784878426264430afe21a8aa1dc9f)
令,则分布函数的反函数得:
。
如果U1服从均匀分布U(0,1),则R可由模拟生成(1-U1)也为均匀分布,可被U1代替)。令θ为2πU2,U2服从均匀分布U(0,1)。得:
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_02.jpg?sign=1739411429-KVspIkgbtPwY745tE8SpTjeZOZ5Zg2G6-0-c582fa7ab6d9fc950ad345ad15986638)
X和Y均服从正态分布。
用Box Muller方法来生成服从正态分布的随机数是十分快捷方便的,是通过[0,1]之间的均匀分布和单位圆来生成正态分布的一种算法。这种算法虽然不需任何估计,但是有21%的拒绝率,且中间包括对数、平方根运算,所以效率并不高。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_03.jpg?sign=1739411429-TJoiPUvsjB247uyT8RcFuKv5PjWBXvR3-0-da996be64e96f8cbda0828b6d88c23e7)
图3-6 创建正态随机数直方图
例3-20: 利用Box Muller创建正态随机数。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_04.jpg?sign=1739411429-t3RBIv8cnUob1iL5oYkVzjoAU7pZ8FMQ-0-47ccbfbca8b15b15b9ac421d82d09ed4)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_05.jpg?sign=1739411429-p1k0akWbCfEzVPZqmQ0HgeEtdhHIDLKc-0-db27cdd28b800f4689ea1f60a9c70c9e)
运行结果如图3-7所示。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/100_01.jpg?sign=1739411429-9uL5XidyZ676gfLVdS043x6irbLOKRtJ-0-d06de8c4b05528af20a39dd75f896c68)
图3-7 创建正态随机数分布图