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