第六章 随机数生成器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解: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
2采样分布近似等于有n 1个自由度的 2分布
均匀性检验
2检验
H0:Ri服从U[0,1] H1:Ri不服从U[0,1] 检验方法:选定一个显著性水平 (如 =0.05)
如果2 k1,2,就接受H0,认为符合均匀性
序列检验
序列检验是运用 2检验来检验随机数序列的n
独立性 观测值落在某个特定区间的概率与以前的观测 值无关
随机数的产生方法
物理方法:利用某些物理过程来产生均匀分布 随机数
随机数表:利用物理过程得到的大量随机数, 制成随机数表
随机数产生程序:按照一定的算法计算出具有 类似于均匀分布随机变量的独立取样值性质的 数
伪随机数
计算机产生随机数的要求
游程检验
aij, bi的取值见书第149,150页
如果n足够大(n≥4000),R近似满足自由度为6 的 2分布。
相关性检验
0.12 0.01 0.23 0.28 0.89 0.31 0.64 0.28 0.83 0.93 0.99 0.15 0.33 0.35 0.91 0.41 0.60 0.27 0.75 0.88 0.68 0.49 0.05 0.43 0.95 0.58 0.19 0.36 0.69 0.87
维均匀性,以此判断随机数序列的独立性。
假设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的观测值个数(观测频度),
第六章 随机数生成器
随机数
在离散系统仿真中,随机数是一个必不可少的 基本元素
(0,1)均匀分布随机数是产生其他许多分布 的随机数的基础
一个随机数序列必须满足两个重要的统计性质: 均匀性和独立性
随机数的性质
均匀性 如果将区间[0,1]分为n个等长的子区间,那 么在每个区间的期望观测次数为N/n,其中N 为观测的总次数
例:使用不同种子的周期
使用乘同余法,对a=13、m=26=64且 Z0=1,2,3,4, 求产生器的周期。
i
Xi
Xi
Xi
Xi
0
1
2
3
4
1
13
26
39
52
2
41
18
59
36
3
21
42
63
20
4
17
34
51
4
5
29
58
23
6
57
50
43
7
37
10
47
8
33
2
35
9
45
7
10
9
27
11
53
31
12
线性同余随机数生成器(LCG)
Zi (aZiLeabharlann Baidu1 c)(mod m)
其中,a称为乘法因子,c称为加法因子,m为 模数
当a=1时,为加同余法; 当c=0时,为乘同余法; 当a≠1、c≠0时,为混合同余法
例:
使用线性同余法产生随机数序列,其中Z0=27、 a=17、c=43、m=100。
平方取中法
20世纪40年代由冯·诺依曼提出的第一个随机 数生成器
例:设有一个4位正整数Z0,对之取平方得到 一个8位正整数(如果不够8位数,可以在左侧 加上0补足8位)。而后取中间的4位获得一个 新的4位正整数Z1。将Z1/10000得到一个[0,1] 之间的小数,则获得第一个“随机数”U1。然 后基于Z1重复上述操作,得到Z2和U2,依次类 推……
序列检验

2 (d) kd n
kk
k
...
j1 1 j2 1 jd
(f j1 , j2 ,... jd

n kd
)2
2 (d)服从自由度为kd 1的 2分布。
游程检验
游程检验是一种对独立性假设的更为直接的检 验。
对Ui序列进行检验,以得到Ui的不间断子序列, 每个子序列都是Ui单调增长的最长子序列,每 个子序列称为游程。 例:[0.86], [0.11, 0.23], [0.03, 0.13], [0.06, 0.55, 0.64, 0.87], [0.10]
产生的随机数要尽可能的逼近理想的均匀性和 独立性统计性质
产生的随机数要有足够长的周期 产生随机数的速度要快,占用的内存空间要小 随机数必须是可重复的
对于给定的起始点或初始条件,应当能够产生 相同的随机数序列,而且与正被仿真的系统完 全无关
产生随机数的算法是利用递推公式:
X n f ( X n1, X n2 ,..., X nk )
游程检验
给定一个有n个Ui的序列,对长度为1,2,3,4,5,6… 的游程进行计数,则可以定义
长度为i的游程, i 1,2,3,4,5
ri


长度

6的游程,
i=6,7,...
则可构造如下检验统计量:
1 6 6
R
n
i1
aij (ri nbi )(rj nb j )
j1
LCG的周期
用LCG方法产生的随机数序列会出现周期循环 的现象,一旦Zi取值和以前出现的某个值相同, 此后的随机数序列就开始循环。循环的长度称 为生成器的周期;
由于0≤Zi≤m-1,因此最大周期是m,称之为满 周期;
为了产生成百上千的随机数,必须采用周期足 够长的LCG,最好是满周期的生成器,这样对 随机数的均匀性也很有利。
49
19
13
61
55
14
25
11
15
5
15
16
1
3
随机数的检验
为了检验产生的随机数序列是否满足均匀性和 独立性,有必要进行一系列的检验:
均匀性检验(频率检验) 序列检验 游程检验 相关性检验
均匀性检验
2检验
2 n (Oi Ei )2
i 1
Ei
其中,Oi为第i组中数据的观测值个数,Ei为第i 组中数据的期望个数,n为组数。
定理:
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
相关文档
最新文档