随机数的使用非常广泛,例如在从统计总体中抽取有代表性的样本时,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡洛模拟法计算的时候等等。事实上,这些统计技术中使用的随机数均为“伪随机数”,由各种各样的随机数生成器生成。
本文将高斯随机数生成器分为四类:一、直接利用累积分布函数的反函数生成随机数;二、转换变形方法,将均匀分布直接转换为高斯分布;三、拒绝采样,在转换方法中增加了按条件拒绝一些转换值;四、递归迭代方法,对已产生的高斯随机数进行线性变换,从而产生新的随机数。
01 反函数算法
基本原理:假设P(X)是一个累积分布函数,P^(-1)是它的反函数,若U是一个服从(0,1)均匀分布的随机变量,则P^(-1)(U)服从函数P给出的分布。
例如要生成一个服从指数分布的随机变量,我们知道指数分布的概率密度函数为
![ef6c9a2096e0604f3df9f6bb55f2d2e4.png](https://i-blog.csdnimg.cn/blog_migrate/4aeb66661f8f702d7915589c2edd5d80.jpeg)
则累积分布函数为
![fe9235ef0250d42424be80821ecf0da3.png](https://i-blog.csdnimg.cn/blog_migrate/2907e791fa9db036b2f9982792ccb66c.jpeg)
算法的核心是要找到指数随机变量的值,使得Prob(V≤x)是[0,1]区间上的均匀分布。即给定一个满足均匀分布的变量u之后,要使得
![2cee2e4aa150f5885fedc40ccd476253.png](https://i-blog.csdnimg.cn/blog_migrate/752cb5d2f6c2c97563afa1019faae406.jpeg)
通过求解 x,得到(1)式:
![5fe088d1ab709f4acc0a148e28e292aa.png](https://i-blog.csdnimg.cn/blog_migrate/c10ab64c3c22b593fb6aec762ba164a5.jpeg)
上式的作用就是把输入的均匀随机数 u 转换为指数随机数。
类似地,对正态分布来说,累积分布函数如下图所示,
![e854cb9d8b7fa0061c35f6bad8b45915.png](https://i-blog.csdnimg.cn/blog_migrate/dfaf14505dc1636f1f289d7d2c8ac1dd.png)
图1:正态分布累积分布图
在y轴上产生服从(0,1)均匀分布的随机数,水平向右投影到曲线上,再垂直向下投影到x轴,这样在x轴上就得到了正态分布。
然而,正态分布的累