![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=1739425023-j2DVB9Ro52pX0JLQA45tVQIbaRjN27Hj-0-6e5bdef53b81323bc6d14b7b05a26a6d)
令x=Rcosθ,y=Rsinθ,其中,θ∈[0,2π],则R有分布函数:
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/98_05.jpg?sign=1739425023-6CxZZOreCZTExMDwIFGImVAeFfQU0SOU-0-f318054249495c76a33a1e5b82a1d776)
令,则分布函数的反函数得:
。
如果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=1739425023-p6URQnEJ0OjbZgCv4jiba8zhKurLH7Le-0-0cffd4b2181b12a43bdf1e7dea3c6a84)
X和Y均服从正态分布。
用Box Muller方法来生成服从正态分布的随机数是十分快捷方便的,是通过[0,1]之间的均匀分布和单位圆来生成正态分布的一种算法。这种算法虽然不需任何估计,但是有21%的拒绝率,且中间包括对数、平方根运算,所以效率并不高。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_03.jpg?sign=1739425023-GAccDQ7GM5cKhf9PNtec4fL7Sw81JtBr-0-b8da53cf7a4f0bc3708068d0763719e5)
图3-6 创建正态随机数直方图
例3-20: 利用Box Muller创建正态随机数。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_04.jpg?sign=1739425023-wkB9mwAp45OxqLFoyOvIiqxtbZt9oSEf-0-56ce9d38545eabc05113fb95f16d479f)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/99_05.jpg?sign=1739425023-OBCgKqP5IhxhJTyV99vJeUasKGhFvGtP-0-a3786786fda28cd9c7132d073abc31a6)
运行结果如图3-7所示。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/100_01.jpg?sign=1739425023-oTDzkhJFWe2rjoYXt05HLxyM4aa7i2jt-0-0fb9bcd8ce7461163c1c83bb0187cd01)
图3-7 创建正态随机数分布图