均匀分布随机数的生成算法简介
关键词:均匀分布随机数,线性同余法,反馈位寄存器法,组合随机数发生器
一、引言
设随机变量 X 的分布函数为
F(X)
, {
Xi,i=1,2,⋯} 独立同分布 F(X) ,则 {
Xi,i=1,2,⋯} 的一次观察值 {
x1,x2,x3,⋯} 称为分布 F(X) 随机数序列,简称随机数。随机数是随机模拟的基本构成元素,其质量的优劣将直接影响模拟研究的成败。人们本能的可以通过物理实验产生一些常见分布的随机数,如可以通过反复的投硬币来产生二项分布的随机数,可以通过反复投骰子来产生多项分布的随机数,通过对排队的观察记录来产生泊松分布的随机数,该方法产生的随机数质量好,但是数量有限,而且成本很高。随后人们尝试预先生成大量的真实随机数存储起来,进行随机模拟时读取存储的随机数,但是这种方法的速度较低,如今已经被取代。现在随机模拟采用的随机数通常是由计算机按确定的递推公式实时地产生的伪随机数,其在一定程度上体现随机性。好的伪随机数序列与真实随机数序列在统计检验上表现几乎相同,很难区分,因此伪随机数通常也被称为随机数。计算机最容易产生的随机数是均匀分布随机数,产生这些随机数的发生器主要有线性同余发生器、反馈位移寄存器发生器以及组合发生器。
二、线性同余发生器
线性同余发生器是由Lehmer在1951年提出的,其是利用数论中的同余运算来产生随机数,其递推公式为:
xn=(axn−1+c)(modM);a>0,c≥0,M>0n=1,2,⋯
其中
c>0
时,称为混合同余发生器,
c=0
时,称为乘同余发生器。
1. 混合同余发生器
为了对混合同余发生器有更加直观的认识,我们列举一些线性同余发生器的例子,如:
xn=(7xn−1+7)(mod10)
初始值取
x0=7
,生成的序列为
{
7,6,9,0,7,6,9,0,7,6,⋯}
,周期
T&#