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