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