470 likes | 627 Views
建模与仿真. 第二章 复杂系统的建模. 第二章 补充材料. 第一节 概述 一 随机数的产生方法 1.均匀分布随机数的产生 产生(0, 1)均匀分布随机数的方法很多,大致可归纳为三大类: 1)利用专门的随机数表。 这种随机数随机性和均匀性较好,但是很难产生和存储足够大的随机数表,而仿真有时需要大量的随机数。. 2)物理方法产生随机数 例如放射粒子计数器,电子管或晶体管噪声发生器等。这种随机数随机性和均匀性都很好,而且可以产生任意多个随机数。缺点是没有可重复性,难以对程序和仿真的正确性作检查。. 3 )数学方法产生随机数
E N D
建模与仿真 第二章 复杂系统的建模 第二章补充材料
第一节 概述 一 随机数的产生方法 1.均匀分布随机数的产生 产生(0, 1)均匀分布随机数的方法很多,大致可归纳为三大类: 1)利用专门的随机数表。 这种随机数随机性和均匀性较好,但是很难产生和存储足够大的随机数表,而仿真有时需要大量的随机数。
2)物理方法产生随机数 例如放射粒子计数器,电子管或晶体管噪声发生器等。这种随机数随机性和均匀性都很好,而且可以产生任意多个随机数。缺点是没有可重复性,难以对程序和仿真的正确性作检查。
3)数学方法产生随机数 常用的方法有:平方取中法和线性同余法。
i.平方取中法: 平方取中法是四十年代由冯·诺依曼和梅特罗波利斯(Von Neuman and Metropolis)提出的。其基本思想是任取一个N位整数作为初值,将初值平方,得到一个2N位的整数,如果初值的平方不是2N位时,高位用0补齐,取中间N位作第一个随机数。
将第一个随机数平方取中间N位即得第二个随机数,以此类推可得到一系列随机数。平方取中法虽然简单,但周期较短,产生的随机数的统计性质不好,若初值取得不恰当,还会发生退化现象。所以必须注意初值的选取。 。
ii.线性同余法 当今应用的大多数随机数发生器是采用线性同余法。使用线性同余法必须事先提供三个参数;l,u,m.其迭代公式为: xi+1=(λxi+μ)(mod m)
其中,i=1,2,…λ≠0 。 这里A称为乘子,μ为增量,m为模。在式中,若给定初值x0(称为种子),就可迭代算出均匀随机数序列x1、x2、……,将它们除以m,即可得到(0,1)区间均匀分布的随机数xi 。
当μ≠0、λ=1时称为加同余法;当μ=0且λ≠1时,称为乘同余法;当λ≠1且μ≠0时称为混合同余法。乘同余法的迭代公式为:当μ≠0、λ=1时称为加同余法;当μ=0且λ≠1时,称为乘同余法;当λ≠1且μ≠0时称为混合同余法。乘同余法的迭代公式为: xi+1=λxi(mod m)
例如用乘同余法产生随机数,其中λ=19,m=100,x。=11,按下面步骤计算:例如用乘同余法产生随机数,其中λ=19,m=100,x。=11,按下面步骤计算: 第i步 xi-1 λxi-1 λxi-1(mod m) 1 11 209 9 2 9 171 71 3 71 1349 49 4 49 931 31 5 31 589 89
由于模数m的位数有限,这使得产生的随机数序列到了一定长度后,总会出现重复循环序列的现象。把重复循环序列的长度称为周期,用L表示(L≤m),要使周期足够的长,必须选择适当的参数λ,x。及m之值。由于模数m的位数有限,这使得产生的随机数序列到了一定长度后,总会出现重复循环序列的现象。把重复循环序列的长度称为周期,用L表示(L≤m),要使周期足够的长,必须选择适当的参数λ,x。及m之值。
对于二进制计算机,参数m、λ和x。可按下列规则选取。对于二进制计算机,参数m、λ和x。可按下列规则选取。 m的选择:为了获得较长的周期L,希望m取得足够大。当计算机的尾数字长为P时,取m=2P,其最大可能周期L=2P-2,且计算方便,当以m为模操作时,只需作简单的移位操作即可。
A和xo的选择:为了能得到最大可能周期L:2p-2,选λ=8K土3(K为正整数),λ值不宜取得过小,当λ选取得和2p/2接近时,可保证连续产生的两个随机数之间只有弱相关。xo应不为2的倍数,因此选xo为奇数。A和xo的选择:为了能得到最大可能周期L:2p-2,选λ=8K土3(K为正整数),λ值不宜取得过小,当λ选取得和2p/2接近时,可保证连续产生的两个随机数之间只有弱相关。xo应不为2的倍数,因此选xo为奇数。
一般的通用编程语言都有生成(0,1)之间随机数的函数。一般能够满足要求不太高的仿真要求一般的通用编程语言都有生成(0,1)之间随机数的函数。一般能够满足要求不太高的仿真要求
二、几种重要的概率分布 先讲一下随机变量的概率分布函数的概念. 随机变量的概率分布函数: 若X是一随机变量,x是任意实数,函数 F(x)=P(X<=x)称为随机变量X的概率分布函数
对随机变量X的概率分布函数 F(x),若存在非负的函数f(x),使得对任意实数x均有: 则称f(x)为连续型随机变量X的概率密度函数
常见的几种概率分布如下: 1.均匀分布
2.正态分布(高斯分布) 1 f(x)= 2πσ
3指数分布 X的概率分布函数为
前面几种分布都是连续性随机变量的概率分布,下面的是离散型随机变量的概率分布。前面几种分布都是连续性随机变量的概率分布,下面的是离散型随机变量的概率分布。 4.泊松分布 若离散型随机变量的概率分布为
其中λ>0为常数,则称X服从参数为λ的泊松分布,记作X~Poisson(λ).其中λ>0为常数,则称X服从参数为λ的泊松分布,记作X~Poisson(λ). 参数为λ的泊松分布随机变量的均值及方差都是λ,其概率分布图形如下:
泊松分布常见于排队服务系统中,t时间内到达系统的顾客数目X服从参数为λ的泊松分布,即泊松分布常见于排队服务系统中,t时间内到达系统的顾客数目X服从参数为λ的泊松分布,即
这种顾客到达模式又称为最简单流。它满足下面的三个条件:这种顾客到达模式又称为最简单流。它满足下面的三个条件: 1)平稳性:在某个时间区间内,有k个顾客到达的概率仅与时间间隔长短有关,而与这段时间的起点无关。 2)无后继性:在某个时间区间内,到达的顾客数目与以前来到的顾客数目无关,也不影响以后到达的顾客数目。 3)普通性:不可能有两个或两个以上顾客同时到达系统。
三、非均匀分布随机数的产生 均匀分布随机数是随机数中最简单和最基本的。借助于均匀分布随机数可以产生出其它分布的随机数。
已知一个随机变量的概率分布函数,可借助于(0,1)区间上均匀分布随机数来产生具有已知概率分布的随机数。用这种方法产生随机数的过程中要用到概率分布函数的逆函数,所以称作逆变换法。逆变换法既可用于连续随机数的产生,也可用于离散随机数的产生。已知一个随机变量的概率分布函数,可借助于(0,1)区间上均匀分布随机数来产生具有已知概率分布的随机数。用这种方法产生随机数的过程中要用到概率分布函数的逆函数,所以称作逆变换法。逆变换法既可用于连续随机数的产生,也可用于离散随机数的产生。
连续随机数 设需要产生分布函数为F(x)的连续随机数X,若已有(0,1)区间上均匀分布随机数R,则产生x的逆变换公式为:F(x)=r 即x=F-1(r)
这个式子)的直观意义如下图所示。若给定(0,1)区间均匀随机数R的一个值ri,则按曲线x=F-1(r)可以在x轴上取得相应的xi= F-1(ri)。对于一系列(0,1)区间均匀分布随机数ri (i=1,2,…,n)可以在x轴上得到n个相应 点x
例如要产生(a,b)区间均匀分布随机数,由于(a,b)区间均匀分布随机变量X的概率密度函数和概率分布函数分别为:例如要产生(a,b)区间均匀分布随机数,由于(a,b)区间均匀分布随机变量X的概率密度函数和概率分布函数分别为:
令r=(x-a)/(b-a) (0≤r≤1) 则:x=F-1(r)=a+(b-a)r 所以要产生(a,b)区间均匀分布随机数,只须按此式编一子程序,并调用(0,1)区间上的均匀分布随机数产生子程序即可。
又例如要产生参数为λ的指数分布随机数,由于指数分布随机变量X的概率分布函数为:又例如要产生参数为λ的指数分布随机数,由于指数分布随机变量X的概率分布函数为:
则:x=F-1(r)=-1/λln(1-r) 其中,r是(0,1)区间上的均匀分布随机数,那么(1一r)也是(0,1)区间上均匀分布随机数,故伤式可简化为:x= -1/λlnr 指数分布随机数的均值为1/λ,若λ=1,则x= - lnr
再看如何产生参数为m的韦伯尔分布的随机数,服从韦伯尔(Weibull)分布的随机变量X的概率分布函数为:再看如何产生参数为m的韦伯尔分布的随机数,服从韦伯尔(Weibull)分布的随机变量X的概率分布函数为:
若r*是(0,1)区间均匀分布的随机数,则1- r*也是(0,1)区间均匀分布随机数,故令r=1- r*,r=e-xm有: x=(-lnr)1/m
离散随机数 上述方法也可用来产生离散分布的随机数x,设X的可能取值为xi,其密度函数为: pk=P(X=xk), k=1,2,3,... 其分布函数为:
用此方法产生离散分布随机数的实现过程是;先产生(0,1)区间均匀分布随机数r,再计算满足下式的K值,则xk即为所需随机数。用此方法产生离散分布随机数的实现过程是;先产生(0,1)区间均匀分布随机数r,再计算满足下式的K值,则xk即为所需随机数。 F(xk-1)<r≤F(xk)
下图是用逆变换产生离散分布随机数的示意图。下图是用逆变换产生离散分布随机数的示意图。
同时也不难看出,按上法产生的离散分布随机数的密度函数为pk同时也不难看出,按上法产生的离散分布随机数的密度函数为pk P(x=xk)=P[F(xk-1) <r≤F(xk)]=F(xk)-F(xk-1)=pk a) 产生取值可能为0,1,2,3,4的离散分布随机数,其密度函数为
该随机数的分布函数示于上图,从图中可见,每产生一个(0,1)区间的均匀随机数r,将它依次与F(xk)(k=0,1,2,3,4)相比较,若它位于F(xk-1)与F(xk)之间,则k即为所需的一个随机数。该随机数的分布函数示于上图,从图中可见,每产生一个(0,1)区间的均匀随机数r,将它依次与F(xk)(k=0,1,2,3,4)相比较,若它位于F(xk-1)与F(xk)之间,则k即为所需的一个随机数。
b) 几何分布随机数的产生 生态学中所处理的概率分布,大多数是所谓离散型随机变量的分布(即只取0或正的整数值)。
可以简单地计算得: F(x)=1-qx+1 由上式可得:[1-F(x)]/q=qx 左边是一个最大值为1(x=0),最小值为0(x=∞)的在区间[0,1]上的分布。假定r为区间[0,1]上均匀分布的随机数,r= qx,则由给定的q及r计算x=lnr/lnq。