当前位置:文档之家› 第六章 随机数生成器

第六章 随机数生成器

随机数

不可少的 基本元素 (0,1)均匀分布随机数是产生其他许多分布 的随机数的基础 一个随机数序列必须满足两个重要的统计性质: 均匀性和独立性
随机数的性质


均匀性 如果将区间[0,1]分为n个等长的子区间,那 么在每个区间的期望观测次数为N/n,其中N 为观测的总次数 独立性 观测值落在某个特定区间的概率与以前的观测 值无关

线性同余随机数生成器(LCG)
Zi (aZi 1 c)(mod m)



其中,a称为乘法因子,c称为加法因子,m为 模数 当a=1时,为加同余法; 当c=0时,为乘同余法; 当a≠1、c≠0时,为混合同余法
例:
使用线性同余法产生随机数序列,其中Z0=27、 a=17、c=43、m=100。 解:Zk=(aZk-1+c)mod m Z1=(17×27+43) mod 100=502mod100=2 Z2=(17×2+43) mod 100=77mod100=77 Z3=(17×77+43) mod 100=1352mod100=52 …… U1=2/100=0.02, U2=77/100=0.77, U3=0.52
当Xi=Ui时,E(Ui) 1/ 2,V(Ui)=1/12 E ( X i X i j ) 1/ 4 所以, j 12E ( X i X i j ) 3 1/12
相关性检验
12 h j U1 kj U1 (k 1) j 3, h 1 k 0
定理:

LCG具有满周期,当且仅当以下3个条件成立:
1. m和c互质;
2. 存在一个质数q,能够同时整除m和a-1; 3. m和a-1能够被4整除。
模数m的取值

为了使LCG的周期足够长,m的取值应该较大; 为了加快计算机的处理速度,选择m=2b,其 中b为计算机CPU一次能处理的最大位数;目 前b=32-1=31
随机数的产生方法



物理方法:利用某些物理过程来产生均匀分布 随机数 随机数表:利用物理过程得到的大量随机数, 制成随机数表 随机数产生程序:按照一定的算法计算出具有 类似于均匀分布随机变量的独立取样值性质的 数
伪随机数
计算机产生随机数的要求



产生的随机数要尽可能的逼近理想的均匀性和 独立性统计性质 产生的随机数要有足够长的周期 产生随机数的速度要快,占用的内存空间要小 随机数必须是可重复的 对于给定的起始点或初始条件,应当能够产生 相同的随机数序列,而且与正被仿真的系统完 全无关
Xi
3 39 59 63 51 23 43 47 35 7 27 31 19 55 11 15 3
Xi
4 52 36 20 4
随机数的检验

为了检验产生的随机数序列是否满足均匀性和 独立性,有必要进行一系列的检验:

均匀性检验(频率检验) 序列检验 游程检验

相关性检验
均匀性检验
检验
相关性检验
设给定N个随机数x1, x2, …, xn,计算前后距离为j的 样本相关系数:
j Cor ( X i , X i j )
Cov ( X i , X i j ) V ( X i )V ( X i j ) E ( X i X i j ) i i j V ( X i )V ( X i j )
序列检验

d k 2 (d) n 2
... (f
j1 1 j2 1 jd d
k
k
k
j1 , j2 ,... jd
n 2 d) k
2
(d)服从自由度为k 1的 分布。
游程检验


游程检验是一种对独立性假设的更为直接的检 验。 对Ui序列进行检验,以得到Ui的不间断子序列, 每个子序列都是Ui单调增长的最长子序列,每 个子序列称为游程。 例:[0.86], [0.11, 0.23], [0.03, 0.13], [0.06, 0.55, 0.64, 0.87], [0.10]

其中,h (n i) / j 1 (n 1) / j 1。 h 13h 7 V( j )= v, 2 (h 1) 则构造如下检验统计量: Aj
j
V( j )


,该统计量近似服从标准正态分布,
当 A j z1 /2时,拒绝原假设。

产生随机数的算法是利用递推公式:
X n f ( X n1, X n2 ,..., X nk )
平方取中法

20世纪40年代由冯· 诺依曼提出的第一个随机 数生成器 例:设有一个4位正整数Z0,对之取平方得到 一个8位正整数(如果不够8位数,可以在左侧 加上0补足8位)。而后取中间的4位获得一个 新的4位正整数Z1。将Z1/10000得到一个[0, 1]之间的小数,则获得第一个“随机数”U1。 然后基于Z1重复上述操作,得到Z2和U2,依次 类推……
序列检验


序列检验是运用 2检验来检验随机数序列的n 维均匀性,以此判断随机数序列的独立性。 假设Ui是独立同分布U(0,1)的随机变量,则构 造n个d维随机变量:
U1=(U1,U2,…,Ud), U2=(Ud+1,Ud+2,…,U2d),… 将[0,1]等分为k个子区间,则在d维空间中共有 kd个子区间,n个随机变量落在每个区间的个 数期望值(期望频度)为n/kd。设fj1,j2,…,jd为落 在子区间j1j2…jd的观测值个数(观测频度),

LCG的周期



用LCG方法产生的随机数序列会出现周期循环 的现象,一旦Zi取值和以前出现的某个值相同, 此后的随机数序列就开始循环。循环的长度称 为生成器的周期; 由于0≤Zi≤m-1,因此最大周期是m,称之为满 周期; 为了产生成百上千的随机数,必须采用周期足 够长的LCG,最好是满周期的生成器,这样对 随机数的均匀性也很有利。
游程检验
给定一个有n个Ui的序列,对长度为1,2,3,4,5,6… 的游程进行计数,则可以定义
2, 3, 4, 5 长度为i的游程, i 1, ri 7,... 长度 6的游程, i=6,
则可构造如下检验统计量:
1 6 6 R a ij (ri nbi )(rj nb j ) n i 1 j1
游程检验
aij , bi的取值见书第 149, 150页
如果n足够大(n≥4000),R近似满足自由度为6 2 的 分布。
相关性检验
0.12 0.28 0.91 0.49 0.69 0.01 0.83 0.41 0.05 0.87 0.23 0.93 0.60 0.43 0.28 0.99 0.27 0.95 0.89 0.15 0.75 0.58 0.31 0.33 0.88 0.19 0.64 0.35 0.68 0.36
2
2 ( O E ) i 2 i Ei i 1 n
其中,Oi为第i组中数据的观测值个数,Ei为第i 组中数据的期望个数,n为组数。
采样分布近似等于有n 1个自由度的 分布
2 2
均匀性检验
检验
2
H0:Ri服从U[0,1] H1:Ri不服从U[0,1] 检验方法:选定一个显著性水平 (如 =0.05) 2 2 如果 k1, , 就接受H0,认为符合均匀性
例:使用不同种子的周期

使用乘同余法,对a=13、m=26=64且 Z0=1,2,3,4, 求产生器的周期。
i
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Xi
1 13 41 21 17 29 57 37 33 45 9 53 49 61 25 5 1
Xi
2 26 18 42 34 58 50 10 2
相关主题