对随机系统进行模拟,需要产生服从某种分
布的一系列 随机数,?
定义 设随机变量 X(总体)服从某种随机分
布,对其进行了 n次独立观察,得到一组简单随
机样本 X1,X2,…, Xn,满足
1) X1,X2,…, Xn相互独立;
2) 每一个 X1,X2,…, Xn都与总体 X 同分布,
一.随机数的概念
利用某种方法得到一串 数列 r1,r2,…,rn
在一定的统计意义下可作为随机样本
X1,X2,…, Xn
的一组样本值,称 r1,r2,…,rn一组具有与 X
相同分布的 随机数,
例 7.2.1设随机变量 X~ B(1,0.5),模拟该随机
变量 X的一组样本值, 一种简单的方法是
抛一枚均匀硬币,观察出现正反面的情况,
出现正面记为数值, 1”,否则记为, 0”得:
可看成 总体 X的一系列样本值,或称产生了
一系列 具有两点分布的随机数,
0,0,1,0,1,1,1,0,1,0,0,0,
0,1,1,0,1,0,…
数学软件有产生常用分布随机数的功能
对特殊分布 需要数据量很大时
不太有效
需要寻求一种简便、经济、可靠,并能
在计算机上实现的产生随机数的方法,
二,均匀分布随机数的产生
最常用、最基础 的随
机数是在( 0,1)区间
内均匀分布的随机数
(简记为 RND)
理解为:随机
变量 X~ U(0,1)
的 一组样本值
的模拟值
一般采用某种数值计算方法产生随机数序列,
在计算机上运算来得到,
通常是利用递推公式:
),,,( 21 knnnn f ???? ???? ?
给定 k个初始值 ξ1,ξ2,…,ξ k,利用递推公式
递推出一系列随机数 ξ 1,ξ 2,…, ξ n,…
乘同余法
混合同余法




具有较好的
统计性质
1,乘同余法 递推公式为
?
?
?
?
??
Mxr
Mxx
nn
nn )( m o d1 ?
用 M 除 λxn后
得到的余数记
为 xn+1
其中 λ是乘因子,M为模数 (modulus),第一
式是以 M为模数 的 同余式,
给定初值 x0 (称为 种子 ),递推计算出
r1,r2,…
即在 (0,1)上均匀分布的随机数序列,
例 7.2.2 取 x0=1,λ=7,M=103,有
λx0=7× 1=7,x1=7,r1=7/1000=0.007
λx1=7× 7=49,x2=49,r2=49/1000=0.049
λx2=7× 49=343,x3=343,r3=343/1000=0.343
λx3=7× 343=2401,x4=401,r4=401/1000=0.401
λx4=7× 401=2807,x5=807,r5=807/1000=0.807
其余类推,
2,混合同 余法 递推公式为
?
?
?
?
???
Mxr
MCxx
nn
nn )( m o d1 ? 用模 M 去除
λxn+C的余数
其中,C是非负整数,
例 7.2.3 选 λ=97,C=3,M=1000,得递推公式
?
?
?
?
???
1000
)1000( m o d3971
nn
nn
xr
xx
取定种子 x0=71,得
97x0+ 3=6890,x1=890,r1=0.890
97x1+ 3=86333,x2=333,r2=0.333
97x2+ 3=32304,x3=304,r3=0.304
97x3+ 3=29491,x4=491,r4=0.491
97x4+ 3=47830,x5=630,r5=0.630
余类推,接下来的随机数是:
0.113,0.964,0.511,0.570,0.293,0.424,
0.131,0.710,0.873,0.684,0.351,0.050,
0.853…
有下述问题:
1.数列 {rn}是有周期的,周期 L≤M( 模数) ;
因 0≤xn≤M,数列 {xn}最多有 M个相异值,
从而 {rn}也同样如此,
2,数列 {rn}本质上是实数列,给定初始值由递
推公式计算出的一串确定的数列,
不能简单等同于真正意
义的随机数,
解决方法
与思路:
1,选择合适模拟参数
2,对数列进行统计检验
从计算机中直接调用某种分布的随机数同
样存在类似问题,
1,选择模拟参数
1) 周期的长度取决于参数 x0,λ,M的选择 ;
2) 通过适当选取参数可以改善随机数的统计
性质,
x0=1,λ=513,M=236 ( L=234≈2× 1010)
几组供参考的参数值:
x0=1,λ=7,M=1010 ( L=5× 107)
在计算机上编程产生随机数还应注意
浮点运算对周期的影响
x0=1,λ=517,M=212 ( L=240≈1012)
2,对数列进行统计检验
无论用哪一种方法产生的随机数序列 (实
数列 ) RND,都存在问题:
将其 看着是在 (0,1)上均匀分布的连续型随
机变量 X 的独立样本值, 能?
否?
对应的样本是否可以看成 X的简单随机样本:
1) X1,X2,…, Xn相互独立 ;
2) Xi ~ U(0,1),(i=1,2,…, n)
需判断是否具有较好的统计性质:
独立性 均匀性 进行统计检验
样本平均值和理论平均值的 差异性检验,
1.参数检验
对在 (0,1)上均匀分布随机变量 X,有
2
1
3
1121
45
4
D(X)= ; D(X2)=
E(X)= ; E(X2) =
如果 r1,r2,…, rN 是 X 的 N个独立观测值,

?
?
?
N
i
iN rr
1
1 ?
?
?
N
i
irr N
1
22 1
它们的平均值和方差为
2
1
3
1N121
N45
4
D( )= ; D( ) =
E( ) = ; E( ) =
r
r 2r
2r
由中心极限定理知统计量
)21(12
)(
)(
1 ??
?? rN
rD
rErU
)
3
1(45
2
1
)(
)( 2
2
22
2 ??
?
? rN
rD
rEr
U
渐近服从正态分布 N(0,1).
给定显著性水平,根据正态分布确定临界值,
判断 与 E(X),与 E(X2)的差异是否显著,
从而决定能否把 r1,r2,…, rN看成 (0,1)上
均匀分布的随机变量 X的 N个独立样本值,
r 2r
2,分布均匀性检验
均匀性检验又称 频率检验,用来检验用随机
数(样本值)确定的经验频率和均匀分布理
论频率是否有显著性差异,
常用的统计检验方法有,
Χ2 检验 和 累积频率检验 (K- S检验 ),
一般数理统计
书中能查到,
3,独立性检验
检验随机数 r1,r2,…, rN中前后各数的
统计相关性是否显著,
两个随机变量的相关系数反映它们之间的
线性相关程度
若两个随机变量相互独立,则它们的相关系
数必为零 (反之不一定 ),故可以利用相关系数
来检验随机数的独立性,
设给定 N 个随机数 r1,r2,…, rN,计算前后
相距为 k 的样本相关系数
?,2,1,/][ 22
1
1 ??? ?
?
?
?? kSrrrR
kN
i
kiikNk
?
?
??
N
i
iN rrS
1
212 )(其中
原假设 H0,ρk=0,k=1,2,···
若原假设成立,则当 N充分大时 (例如 N- k
> 50)时统计量 Rk渐近服从正态分布 N(0,1),可
采用大样本检验法,
在给定显著性水平下,若拒绝了原假设,可认
为随机 r1,r2,…, rN有一定程度的线性相关
性,更不可能是相互独立的,
设随机变量 X的分布律为
),2,1(,}{ ???? ipxXP ii
三, 任意分布随机数的模拟
l.离散型随机数的模拟
?,2,1,,0
1
)()0( ??? ?
?
n
n
i
ipPP
n令
P(0) P(1) P(2) P(3)
0 1
……
将 {P( n)}作为区间 (0,1)的分点,
若随机变量 R~ U(0,1),有
),2,1(
,}{ )1()()()1(
??
????? ??
n
pPPPRPP nnnnn
}{}{ )()1( nnn xXPRP ?????令
),2,1(,}{ ???? npxXP nn有
产生 X 分布 的随机数的 算法步骤,
(1) 产生 1个 均匀分布随机数 r(RND);
(2) 若 P(n- 1)< r≤P(n), 则令 X取值为 xn.
例 7.2.4 离散型随机变量 X的分布律如下
X=x
P(x)
0 1 2
0.3 0.3 0.4
设 r1,r2,…, rN 是 RND 随机数, 令
?
?
?
?
?
?
??
??
?
i
i
i
i
r
r
r
x
6.0,2
6.03.0,1
3.00,0
从理论上讲,已解决了 产生具有任何离散
型分布的随机数 的问题,
具体执行仍有困难,如 X 的取值是无穷多个
的情况,
可利用分布的自身特点,采用其他的模拟方法,
例 7.2.5 随机变量 X~ B(n,p),其分布律为
),,2,1(,)1(}{ nkppCkXP knkkn ????? ?
随机变量 X是 n 次独立贝努里试验中,事件
A 发生的总次数,其中 p=P(A).
x1,,x2,…,xN 即具有 X的分布律的随机数,
在计算机上模拟 n 重贝
努里试验来产生二项分布
的随机数,
当 p 较大而
计算精度要
求较高时
算法步骤:
1) 产生 n个 RND r1,r2,…, rn;
2) 统计 ri ( i=1,2,…, n) 中使得
ri≤ p
的个数 ni., 0 1
p
重复循环得到, n1,n2,…, nk即所求随
机数列,
利用在 (0,1) 区间上均匀分布的随机数来模
拟 具有给定分布的连续型随机数,
两种方法 反函数法 舍选法
练习题:如何模拟参数为 λ的泊松分布
随机数?
2,连续型随机数的模拟
1) 反函数法
设连续型随机变量 Y 的概率函数为 f(x),
需产生给定分布的随机数,
1) 产生 n个 RND 随机数 r1,r2,…, rn;
算法步骤;)()2 iyi ydyyfr i 中解出从等式 ? ???
所得 yi,i=1,2,…,n 即所求,
反函数法算法原理分析
重要结论,设随机变量 Y的分布函数 F(y)是连
续函数,而且随机变量 X~ U(0,1),令 Z=F- 1(X),
则 Z与 Y有相同分布,
证明 FZ(z)= P{F- 1(X) ≤ z}= P{X≤F(z)}
=G(F(z)) = F(z)
因 G(x)是随机变量 X 的分布函数:
?
?
?
?
?
?
??
?
?
.1,1;10,;0,0
)(
x
xx
x
xG
若 Y的概率密度为 f(y),由 Y=F- 1(X)可得
? ???? Y dyyfYFX )()(
对给出定的 (0,1)上均匀分布随机数 ri,
则具有给定分布的随机数 yi 可由方程
? ??? iyi dyyfr )(
解出,
例 7.2.6 模拟服从参数为 λ的指数分布的随
机数, 其概率密度函数为
?
?
?
?
?? ?
.0,0
,0,)(
x
xexf x??
? ??? iyi dyyfr )(代入公式
iyiy xi edxer ??? ?? ??? ? 1
0有
)1l n (1 ii ry ?? ?可得
若随机变量 ) X~ U(0,1)
1- X~ U(0,1)
(1- ri)与 ri 均为 RND 随机数
模拟公式可改写为
ii ry ln1??
见 P21穿越公路
模型中两辆车之
间距离的模拟
问题:请考虑如何利用此公式
模拟泊松流?
优点,一种普通而适用的方法;
缺点,当反函数不存在或难以求出时,不宜
于使 用,
2)舍选法
基本思想,实质上是从许多 RND 随机数
中选出一部分,使之成为具有给定分布的随
机数,
设随机变量 X的概率密度函数为 f(x),存在
实数 a<b,使 P{a<X<b}=1,
算法步骤:
(1) 选取常数 λ,使 λf(x)< 1,x∈ (a,b);
(2) 产生两个 RND 随机数 r1, r2,令
y= a+ (b- a)ri ;
(3) 若 r2≤λf(y),则令 x=y,
否则剔除 r1和 r2,重返步骤 (2).
重复循环,产生的随机数 x1,x2,…, xN
的分布由概率函数 f(x) 确定,
注,1)( ?? b
a dxxf若不满足条件:
可选取有限区间 (a1,b1),使得
???? 1)(1
1
b
a dxxf
ε是很小的正数,
例如取 a1=μ- 3σ,b1=μ+ 3σ,有
0 0 3.011
1
2
2)(
2
2
1 ??? ?
??
??
?
dxe
b
a
x
在区间 (a1,b1)上应用舍选法,不会出现较大
的系统误差,
产生正态分布
随机数的方法


















3.正态随机数的模拟
1) 坐标变换法
设 r1,r2 是 RND随机数, 令
??
?
?
?
??
??
)2s i n ()ln2(
)2c o s ()ln2(
2
2/1
12
2
2/1
11
rrx
rrx
?
?
则 x1,x2是相互独立的标准正态分布的随机数,
概率讲义有
证明
2) 利用中心极限定理
产生服从 N(μ,σ2)随机数的算法步骤:
(1) 产生 n 个 RND 随机数,r1,r2,…, rn,
(n≥12);/)()2(
1
122?
?
??
n
i
nn
irx计算
若取 n=12,简化为计算
?
?
??
12
1
6
i
irx
x 是服从标
准正态分布
的随机数
(3) 计算 y=σx+μ.
y 是服从 N(μ,σ2) 分布的随机数,
原理分析
设 ζ1,ζ2,…, ζn是 n个相互独立的随机变
量,且 ζi~ U(0,1),i= 1,2,…,n,
,
12
1)()(
2
1 ??
ii DE ??,有
由中心极限定理知
?
?
??
n
i
nn
i
1
122
/)( ??
渐近服从正态分布 N(0,l ).