1管理系统模拟与 GPSS语言
MSSV1.0
引 言
?问题?当已知数据的概率分布后,
如何在模拟中方便有效地产生需要
的随机变量的值?
?计算机模拟的关系:
?模拟 <-随机变量 <- IIDU(0,1)
2管理系统模拟与 GPSS语言
MSSV1.0
第 5章 随机数发生器及随机变量的产生
1,随机数发生器
2.产生随机变量的方法
3,GPSS 语言的随机变量
本章主要内容,
3管理系统模拟与 GPSS语言
MSSV1.0
第 5章 随机数发生器及随机变量的产生
1,什么是随机数发生器
产生 ( 0,1 ]间均匀分布随机数的程序称为随机
数发生器。(所谓随机数,就是具有给定概率分布的
随机变量的可能值。)
2,为什么需要随机数发生器
因为所有各类随机变量都是以随机数发生器产生
的 [0,1) 间均匀分布随机数为基础而得来的。 因此要
产生各类随机变量必须首先要有产生 ( 0,1 ]间均匀分
布随机数的随机数发生器。
5-1 随机数发生器
4管理系统模拟与 GPSS语言
MSSV1.0
5-1 随机数发生器
5.1.1 对随机数发生器的要求
1,产生的随机数必须是均匀分布
2,产生的随机数必须是独立同分布 (IID)
3,可产生相同的数列,又可产生不同的数列
4,数列具有足够长的(重复)周期
5,速度快
6,占有内存小
5管理系统模拟与 GPSS语言
MSSV1.0
5.1.2 常见的随机数发生器
1.平方取中法 将一个四位数平方后,取中间四位数
为第一个随机数,然后再平方取中间四位
数为第二个随机数,以此类推。
例,X0=5234 X02=27394756
X1=3947 X12=15578809
X2=5788 ……
平方取中法易退化,且均匀分布的差异显著。
5-1 随机数发生器
s
ii
ss
ii
XU
XX
2
11
22
1
10/
)10] ( m o d10/[
??
?
?
?
6管理系统模拟与 GPSS语言
MSSV1.0
Z aZ c mi i? ??( ) ( m o d )1
其中, a,c -- 常数 ui 为 [0,1) 间随机数
Zi ---- 任意数,Z0 为 随机数种子
m ---- 发生器的模,近似于发生器的周期,因此越大越好
mod 是一种运算,其算法如下,
对于 Z=A mod M 则
Z A
A
M
M? ? ?
??
?
??
*
2,同余数法
5-1 随机数发生器
7管理系统模拟与 GPSS语言
MSSV1.0
同余数法的讨论
例 Z= A (MOD M)
当 A=0 A (mod M) = 0
A=1 A (mod M) = 1
A=2 A (mod M) = 2
:,
:,
A=M-1 A (mod M) = M-1
A=M A (mod M) = 0
A=M+1 A (mod M) = 1
:,
A=2M A (mod M) = 0
可见,数列是循环的,
有周期
Z A
A
M
M? ? ?
??
?
??
*
5-1 随机数发生器
8管理系统模拟与 GPSS语言
MSSV1.0
常用同余式随机数发生器
Z Z
Z Z
i i
i i
? ?
? ?
?
?
( ) ( mo d )
( ) ( mo d )
5 1 2
314159269 453806245 2
15
1
35
1
31
由上可见,计算机 随机数发生器 产生的随机数是一个具有一定周期
的循环数列,从这个意义上说,计算机产生的随机数是一个 伪 随机数,
( 所谓伪随机数就是说它并不是真正意义上随机数 )它必须经过 检验
才能使用,
BASIC 语言的随机数发生器是函数 RND( )
RND( ) 的种子可由 RANDOMIZE 设定,
5-1 随机数发生器
9管理系统模拟与 GPSS语言
MSSV1.0
5.1.3 随机数发生器的检验
随机数发生器的经验检验方法
1,K-S 检验 均匀性检验 (内容不要求 )
2,检验 均匀性检验
3,顺序检验 独立性检验 (内容不要求 )
4,距离检验 均匀性检验 (内容不要求 )
5,自相关检验 独立性检验 (内容不要求 )
? 2
5-1 随机数发生器
关于理论检验
10管理系统模拟与 GPSS语言
MSSV1.0
5-2 产生 随机变量的方法
1,逆转换法
1
U
X
F(X)
x
假设数据的分布类型已经
通过某些方法确定下来,
如何从这个分布中产生模
拟所需的随机变量?
11管理系统模拟与 GPSS语言
MSSV1.0
逆转换法是利用拟合分布的分布函数的
反函数来产生随机变量, 其步骤如下,
1,确定随机过程中该变量的拟合分布,
2,确定拟合分布的参数及分布函数 F(X).
3,求出分布函数的反函数 X= G(u) =F (U).
4,用随机数发生器产生 ( 0,1 ] 间均匀分布的随机数 Ui
5,用 Xi=G(U)=F (Ui) 来计算,求得该分布的随机变量 Xi.
-1
-1
-1
5-2 产生 随机变量的方法
12管理系统模拟与 GPSS语言
MSSV1.0
例, 指数分布函数随机变量的产生
已知指数分布分布函数为,
F x e x( ) /? ? ?1 ?(X>=0)
则可求得该分布函数的反函数如下,
F u G u u? ? ? ? ?1 1( ) ( ) ln ( )?
F u G u u? ? ? ?1 ( ) ( ) ln ( )?
或者,
5-2 产生 随机变量的方法
13管理系统模拟与 GPSS语言
MSSV1.0
对于第二章的银行汽车窗口例子来说,反函数为,p37
F u G u u? ? ? ?1 0 399( ) ( ), ln ( )
因此,现在可用随机数发生器产生一系列的 ( 0,1 ]
间随机数 Ui,即可求出一系列的指数分布的随机变量,
对于一些不能求得反函数的分布来说,利用逆转法
会遇到困难,这时可借助于数值分析。
5-2 产生 随机变量的方法
14管理系统模拟与 GPSS语言
MSSV1.0
5-2 产生 随机变量的方法
2,合成法 (Composition)
当我们要研究的样本的分布 F 可以表示成几个其他分
布 F1,F2,… 的组合形式时,我们可以采用合成法。
f(x)
小面积 2
小面积 1 小面积 3
15管理系统模拟与 GPSS语言
MSSV1.0
3,结合法
若某个分布的随机变量可以由几个其他分布的
随机变量结合而成,且其他分布的随机变量容易
产生,则可用结合法,
例, 均值为 的 ERLANG 分布 (m - Erlang ),可由 m 个均值
为 的 IID 指数随机变量结合而成,这样,只要先产生
m 个参数为 的指数分布随机变量 Y1,Y2,Y3,.....
Ym,则 m - Erlang 分布的随机变量可求得如下,
X= Y1 + Y2 + Y3+,....,+ Ym
?? / m
? / m
5-2 产生 随机变量的方法
16管理系统模拟与 GPSS语言
MSSV1.0
4,经验分布随机变量的产生
若只有实验数据,得不到拟合分布,则可直接从数据中产生
随机变量,
例 5.1 一个表示轴承寿命的样本如下页所示, 其经
验分布图如下下页 所示。 则随机变量可按如下方
法产生。
5-2 产生 随机变量的方法
17管理系统模拟与 GPSS语言
MSSV1.0
工作时间 轴承损坏比例 ‰ F( X)
1000 0 0
1100 15 0.015
1200 65 0.065
1300 125 0.125
1400 225 0.225
1500 360 0.360
1600 535 0.535
1700 685 0.685
1800 810 0.810
1900 900 0.900
2000 975 0.975
2100 995 0.995
2200 1000 1.000
轴承寿命的数据样本
18管理系统模拟与 GPSS语言
MSSV1.0
经验分布随机变量产生示意图
1
1000 1500 2000
U
X
F(X)
5-2 产生 随机变量的方法
19管理系统模拟与 GPSS语言
MSSV1.0
以下方法不要求,
D,取舍法
E,近似法
F,内插法
经验分布随机变量产生方法
1,先产生一 (0,1 ] 间均匀分布的随机变量 U
2,判断 U 落入那一个区间,既可确定寿命的随机变量
5-2 产生 随机变量的方法
20管理系统模拟与 GPSS语言
MSSV1.0
5-3 GPSS 语言的随机变量
GPSS 语言的随机变量是利用 GPSS函数形式产生的
1 FUNCTION RN$1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38
.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GPSS 指数分布函数随机变量
GPSS 指数分布函数由 24 个点的连续函数组成,均值
为 1,RN$1 为一号 0,1 间均匀分布随机函数,这样的
随机函数 GPSS 允许同时使用多组,如 RN$1,RN$2,
RN$3,RN$4,.....,每组都必须事先定义,
21管理系统模拟与 GPSS语言
MSSV1.0
5-3 GPSS 语言的随机变量
GPSS 语言正态分布随机变量函数
2 FUNCTION RN$2,C24
0,-40/,001,-30/,006,-25 /,022,-20 /,066,-15 /,115,-12
.158,-10 /,211,-8 /,274,-6 /,344,-4 /,420,-2 /,500,0
.579,2 /,655,4 /,725,6 /,788,8 /,841,10 /,889,12 /,933,15
.977,20 /,993,25 /,998,30 /,999,40 / 1,50
程序中调用函数时如下,
GENERATE 80,FN$1
ADVANCE 100,FN$2
22管理系统模拟与 GPSS语言
MSSV1.0
例 5.2 并联排队系统
汽车站有二台效率相同的加油器,
汽车排一个队, 这种情况可有多
种解法,本例将加油器做为存
储器来对待, 其容量为 2, 标号
为 S1。 分二种情况,
100/10
加油器 1加油器 2
例 题
1,到达时间与加油时间为均匀分布
2,到达时间与加油时间为指数分布
23管理系统模拟与 GPSS语言
MSSV1.0
SIMULATE
LINE EQU 1
S1 EQU 1
S1 STORAGE 2
GENERATE 100,10
QUEUE LINE
ENTER S1
DEPART LINE
ADVANCE 80,8
LEAVE S1
TERMINATE 1
START 100
END
进入存储器,即加油器
离开存储器,即加油器
例 题
均匀分布
24管理系统模拟与 GPSS语言
MSSV1.0
SIMULATE
LINE EQU 1
S1 EQU 1
S1 STORAGE 2
1 FUNCTION RN$1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38
.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
2 FUNCTION RN$2,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38
.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$1
QUEUE LINE
ENTER S1 进入存储器,即加油器
DEPART LINE
ADVANCE 80,FN$2
LEAVE S1 离开存储器,即加油器
TERMINATE 1
START 100
END
指数分布
例 题
25管理系统模拟与 GPSS语言
MSSV1.0
1,掌握好 GPSS 系统的进入,执行和退出的指令。
2,编制好 GPSS 程序,可设计几个方案,并分别编制
程序,写在纸上。
3,准备好纸和笔,以便将输出结果抄下来。
4,写好报告提纲,注意报告中应
写的输出结果有那些,以便上
机时记录下来。
上机前的准备
26管理系统模拟与 GPSS语言
MSSV1.0
复习思考题
1。什么是随机数发生器?
2。常用的随机数发生器都有哪些?它们如何产
生随机数?
3。常采用什么方法对随机数发生器进行检验?
4。如何产生随机变量?
5。什么是随机数种子?