第二章 随机数
1,随机数的定义及产生方法
2,伪随机数
3,产生伪随机数的乘同余方法
4,产生伪随机数的乘加同余方法
5,产生伪随机数的其他方法
6,伪随机数序列的均匀性和独立性
? 作 业
第二章 随机数
由具有已知分布的总体中抽取简单子样,在蒙特
卡罗方法中占有非常重要的地位。总体和子样的关系,
属于一般和个别的关系,或者说属于共性和个性的关
系。由具有已知分布的总体中产生简单子样,就是由
简单子样中若干个性近似地反映总体的共性。
随机数是实现由已知分布抽样的基本量,在由已
知分布的抽样过程中,将随机数作为已知量,用适当
的数学方法可以由它产生具有任意已知分布的简单子
样。
1,随机数的定义及产生方法
1) 随机数的定义及性质
2) 随机数表
3) 物理方法
1) 随机数的定义及性质
在连续型随机变量的分布中,最简单而且最基本
的分布是单位均匀分布。由该分布抽取的简单子样称,
随机数序列,其中每一个体称为随机数。
单位均匀分布也称为[ 0,1]上的均匀分布,其
分布密度函数为,
分布函数为,
??
? ???
其他,0
10,1)( xxf
?
?
?
?
?
?
??
?
?
1,1
10,
0,0
)(
x
xx
x
xF
由于随机数在蒙特卡罗方法中占有极其重要的位
置,我们用专门的符号 ξ表示。由随机数序列的定义可
知,ξ1,ξ2,… 是相互独立且具有相同单位均匀分布的
随机数序列。也就是说,独立性, 均匀性 是随机数必
备的两个特点。
随机数具有非常重要的性质:对于任意自然数 s,
由 s个随机数组成的 s维空间上的点 ( ξn+1,ξn+2,… ξn+s) 在 s
维空间的单位立方体 Gs上均匀分布,即对任意的 ai,
如下等式成立,
sia i,,2,110 ????,
?
?
? ???
s
i
iiin asiaP
1
),,1,( ??
其中 P(·)表示事件 ·发生的概率。反之,如果随机
变量序列 ξ1,ξ2… 对于任意自然数 s,由 s个元素所组成
的 s维空间上的点( ξn+1,… ξn+s)在 Gs上均匀分布,则
它们是随机数序列。
由于随机数在蒙特卡罗方法中所处的特殊地位,
它们虽然也属于由具有已知分布的总体中产生简单子
样的问题,但就产生方法而言,却有着本质上的差别。
2) 随机数表
为了产生随机数,可以使用随机数表。随机数表
是由 0,1,…, 9十个数字组成,每个数字以 0.1的等概
率出现,数字之间相互独立。这些数字序列叫作随机
数字序列。如果要得到 n位有效数字的随机数,只需将
表中每 n个相邻的随机数字合并在一起,且在最高位的
前边加上小数点即可。例如,某随机数表的第一行数
字为 7634258910…,要想得到三位有效数字的随机数
依次为 0.763,0.425,0.891。
因为随机数表需在计算机中占有很大内存,而且
也难以满足蒙特卡罗方法对随机数需要量非常大的要
求,因此,该方法不适于在计算机上使用。
3) 物理方法
用物理方法产生随机数的基本原理是:利用某些
物理现象,在计算机上增加些特殊设备,可以在计算
机上直接产生随机数。这些特殊设备称为随机数发生
器。用来作为随机数发生器的物理源主要有两种:一
种是根据放射性物质的放射性,另一种是利用计算机
的固有噪声。
一般情况下,任意一个随机数在计算机内总是用
二进制的数表示的,
其中 εi( i=1,2,…, m)或者为 0,或者为 1。
mm ??? ??????? 222 2211 ???? ?
因此,利用物理方法在计算机上产生随机数,就
是要产生只取 0或 1的随机数字序列,数字之间相互独
立,每个数字取 0或 1的概率均为 0.5。
用物理方法产生的随机数序列无法重复实现,不
能进行程序复算,给验证结果带来很大困难。而且,
需要增加随机数发生器和电路联系等附加设备,费用
昂贵。因此,该方法也不适合在计算机上使用。
2,伪随机数
1) 伪随机数
2) 伪随机数存在的两个问题
3) 伪随机数的周期和最大容量
1) 伪 随机数
在计算机上产生随机数最实用、最常见的方法是
数学方法,即用如下递推公式,
产生随机数序列。对于给定的初始值 ξ1,ξ2…,ξk,确定
ξn+k,n =1,2,… 。经常使用的是 k=1的情况,其递推
公式为,
对于给定的初始值 ξ1,确定 ξn+1,n =1,2 …
)( nkn T ?? ??
??,2,1),,,,( 11 ?? ???? nT knnnkn ????
2) 伪随机数存在的两个问题
用数学方法产生的随机数,存在两个问题,
a) 递推公式和初始值 ξ1,ξ2…,ξk确定后,整个随机数序
列便被唯一确定。不满足随机数相互独立的要求。
b) 由于随机数序列是由递推公式确定的,而在计算机上
所能表示的 [0,1]上的数又是有限的,因此,这种方
法产生的随机数序列就不可能不出现无限重复。一旦
出现这样的 n',n″ (n' < n″ ),使得下面等式成立,
随机数序列便出现了周期性的循环现象 。 对于 k=1的
情况, 只要有一个随机数重复, 其后面的随机数全部
重复, 这与随机数的要求是不相符的 。
kiinin,,2,1 ??? ????? ??
由于这两个问题的存在,常称用数学方法产生的
随机数为伪随机数。对于以上存在的两个问题,作如
下具体分析。
关于第一个问题,不能从本质上加以改变,但只
要递推公式选得比较好,随机数间的相互独立性是可
以近似满足的。至于第二个问题,则不是本质的。因
为用蒙特卡罗方法解任何具体问题时,所使用的随机
数的个数总是有限的,只要所用随机数的个数不超过
伪随机数序列出现循环现象时的长度就可以了。
用数学方法产生的伪随机数容易在计算机上得到,
可以进行复算,而且不受计算机型号的限制。因此,
这种方法虽然存在着一些问题,但仍然被广泛地在计
算机上使用,是在计算机上产生伪随机数的主要方法。
3) 伪随机数的周期和最大容量
发生周期性循环现象的伪随机数的个数称为伪随
机数的周期 。 对于前面介绍的情况, 伪随机数的周期
为 n″- n' 。
从伪随机数序列的初始值开始, 到出现循环现象
为止, 所产生的伪随机数的个数称为伪随机数的最大
容量 。 前面的例子中, 伪随机数的最大容量为 n″ 。
3,产生伪随机数的乘同余方法
乘同余方法是由 Lehmer在 1951年提出来的, 它的
一般形式是:对于任一初始值 x1,伪随机数序列由下面
递推公式确定,
其中 a为常数 。
)( m o d,1 Mxax ii ???
?,2,1,11 ?? ?? iMx ii?
1) 乘同余方法的最大容量的上界
对于任意正整数 M,根据数论中的标准分解定理,
总可以分解成如下形式,
其中 P0=2,P1,… Pr表示不同的奇素数,α0表示非负
整数,α1,…, αr表示正整数。 a无论取什么值,乘同
余方法的最大容量的上界为,
的最小公倍数 。 其中,
rrPPPM ??? ?10 10?
)}()(),({)( 10 10 rrPPPM ??? ???? ??
?
?
?
?
?
?
?
?
?
? 2
22
101
)(
0
2
0
0
0
0
0
??
?
?
?
?
?


或当
P
riPPP iii ii,,2,1),1()( 11 ????? ?? ???
2) 关于 a与 x1的取值
如果 a与 x1满足如下条件,
对于,
x1与 M互素, 则乘同余方法产生的伪随机数序列的最大
容量达到最大可能值 λ(M)。
?
?
?
?
?
?
?
?
?
2)8( m o d53
2)4( m o d3
1)2( m o d1
0
0
0
?
?
?
当或


a
)(0 iiPn ????
)( m o d1 iin Pa ??
3) 乘同余方法在计算机上的使用
为了便于在计算机上使用,通常取,
M =2s
其中 s为计算机中二进制数的最大可能有效位数
x1= 奇数
a = 52k+1
其中 k为使 52k+1在计算机上所能容纳的最大整数,
即 a为计算机上所能容纳的 5的最大奇次幂 。 一般地,
s=32时, a=513; s=48,a=515等 。 伪随机数序列的最大
容量 λ(M)=2s-2 。
乘同余方法是使用的最多, 最广的方法, 在计算机
上被广泛地使用 。
4,产生伪随机数的乘加同余方法
产生伪随机数的乘加同余方法是由 Rotenberg于
1960年提出来的, 由于这个方法有很多优点, 已成为
仅次于乘同余方法产生伪随机数的另一主要方法 。
乘加同余方法的一般形式是, 对任意初始值 x1,伪
随机数序列由下面递推公式确定,
其中 a和 c为常数 。
)( m o d,1 Mcxax ii ????
?,2,1,11 ?? ?? iMx ii?
1) 乘加同余方法的最大容量
关于乘加同余方法的最大容量问题, 有如下结论:
如果对于正整数 M的所有素数因子 P,下式均成立,
当 M为 4的倍数时, 还有下式成立,
c与 M互素, 则乘加同余方法所产生的伪随机数序列的
最大容量达到最大可能值 M。
)( m o d1 Pa ?
)4( m o d1?a
2) M,x1,a,c的取值
为了便于在计算机上使用, 通常取
M = 2s
其中 s为计算机中二进制数的最大可能有效位数 。
a = 2b + 1 (b≥2)
c = 1
这样在计算中可以使用移位和指令加法, 提高计算
速度 。
5,产生伪随机数的其他方法
1) 取中方法
2) 加同余方法
6,伪随机数序列的均匀性和独立性
判断伪随机数序列是否满足均匀和相互独立的要
求,要靠统计检验的方法实现。对于伪随机数的统计
检验,一般包括两大类:均匀性检验和独立性检验。
六十年代初,人们开始用定性的方法研究伪随机
数序列的均匀性和独立性问题,简要叙述如下。
1) 伪随机数的均匀性
这里只考虑伪随机数序列 ξ1,ξ2…,ξn全体作为子样
时的均匀性问题 。 其中 n为伪随机数序列的最大容量 。
对于任意的 0≤x≤1,令 Nn(x)表示伪随机数序列 ξ1,ξ2…,
ξn中适合不等式
ξi< x i=1,2,…, n
的个数, 则
标志伪随机数序列 ξ1,ξ2…,ξn的均匀程度, 称为均
匀偏度 。
|)(|)( s u p
10
xn xNn n
x
??
??
 ?
将伪随机数序列 ξ1,ξ2…,ξn从小至大重新排列
并令,则由 δ(n)的定义,容易证明
很明显,对于固定的 n, δ(n)的值越小越好。它是
描述伪随机数序列均匀程度的基本量。对于任意随机
数序列,均有如下不等式成立,
当 时,所对应的伪随机数序列为最佳分布。
n??? ?????? ?21
1,0 10 ???? ?n??
??
???
??
? ???
?
??
||,||)( 1
10
m a x ninin ii
x
???
nn 2
1)( ??
nn 2
1)( ??
可以证明,伪随机数序列为最佳分布的充要条件是
它取遍序列
的所有值 。
对于计算机上使用的乘同余方法,按照前面介绍的
方法选取 a,x1时,所产生的伪随机数序列的均匀偏度
对于乘加同余方法
对于部分伪随机数的均匀性问题通常用统计检验方
法检验。
nini,,2,12 12 ???
nn 4
3)( ??
nn
1)( ??
2) 伪随机数的独立性
对于任意, 令 表示 (ξ1,ξ2),
(ξ2,ξ3),…, (ξn,ξn+1)中适合不等式
的个数, 根据随机变量间相互独立的定义和频率近似概
率的方法, 令
则 ε(n)标志伪随机数序列 ξ1,ξ2…, ξn的独立程度, 简称为
独立偏度 。 对于固定的 n,ε(n)的值越接近于零, 伪随机
数序列的独立性越好 。
1,0 ?? yx ),( yxN n
yx ii ?? ? 1,??
|)()(),(|)( s u p
1,0 n
yN
n
xN
n
yxNn nnn
yx
??
??
 ?
对于乘同余方法,
对于乘加同余方法,
因此, 这两种方法的独立性都是很好的 。
同伪随机数的均匀性问题一样,伪随机数序列的独
立性问题也是对它的全体讨论的。若只考虑伪随机数的
一部分,在通常情况下给出 ε(i)是相当因难的。因此,伪
随机数序列的独立性问题的统计检验方法同样是非常重
要的。
nnn
31)( ???
nnn
41)( ???
? 作 业
1) 证明 1— ξ是随机数 。
2) 证明 与 同分布 。
),m a x ( 21 ?? ?