随机数的使用非常广泛,例如在从统计总体中抽取有代表性的样本时,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡洛模拟法计算的时候等等。事实上,这些统计技术中使用的随机数均为“伪随机数”,由各种各样的随机数生成器生成。
本文将高斯随机数生成器分为四类:一、直接利用累积分布函数的反函数生成随机数;二、转换变形方法,将均匀分布直接转换为高斯分布;三、拒绝采样,在转换方法中增加了按条件拒绝一些转换值;四、递归迭代方法,对已产生的高斯随机数进行线性变换,从而产生新的随机数。
01 反函数算法
基本原理:假设P(X)是一个累积分布函数,P^(-1)是它的反函数,若U是一个服从(0,1)均匀分布的随机变量,则P^(-1)(U)服从函数P给出的分布。
例如要生成一个服从指数分布的随机变量,我们知道指数分布的概率密度函数为

则累积分布函数为

算法的核心是要找到指数随机变量的值,使得Prob(V≤x)是[0,1]区间上的均匀分布。即给定一个满足均匀分布的变量u之后,要使得

通过求解 x,得到(1)式:

上式的作用就是把输入的均匀随机数 u 转换为指数随机数。
类似地,对正态分布来说,累积分布函数如下图所示,

图1:正态分布累积分布图
在y轴上产生服从(0,1)均匀分布的随机数,水平向右投影到曲线上,再垂直向下投影到x轴,这样在x轴上就得到了正态分布。
然而,正态分布的累