您好,欢迎访问三七文档
随机数的产生对随机系统进行模拟,需要产生服从某种分布的一系列随机数.?定义设随机变量X(总体)服从某种随机分布,对其进行了n次独立观察,得到一组简单随机样本X1,X2,…,Xn,满足1)X1,X2,…,Xn相互独立;2)每一个X1,X2,…,Xn都与总体X同分布.利用某种方法得到一串数列r1,r2,…,rn一.随机数的概念在一定的统计意义下可作为随机样本X1,X2,…,Xn的一组样本值,称r1,r2,…,rn一组具有与X相同分布的随机数.例1设随机变量X~B(1,0.5),模拟该随机变量X的一组样本值.一种简单的方法是抛一枚均匀硬币,观察出现正反面的情况,出现正面记为数值“1”,否则记为“0”得:0,0,1,0,1,1,1,0,1,0,0,0,0,1,1,0,1,0,…可看成总体X的一系列样本值,或称产生了一系列具有两点分布的随机数.需要寻求一种简便、经济、可靠,并能在计算机上实现的产生随机数的方法.数学软件有产生常用分布随机数的功能对特殊分布需要数据量很大时不太有效二.均匀分布随机数的产生最常用、最基础的随机数是在(0,1)区间内均匀分布的随机数(简记为RND)理解为:随机变量X~U(0,1)的一组样本值的模拟值一般采用某种数值计算方法产生随机数序列,在计算机上运算来得到.通常是利用递推公式:),,,(21knnnnf给定k个初始值ξ1,ξ2,…,ξk,利用递推公式递推出一系列随机数ξ1,ξ2,…,ξn,…乘同余法混合同余法常用方法具有较好的统计性质1.乘同余法递推公式为MxrMxxnnnn)(mod1用M除λxn后得到的余数记为xn+1其中λ是乘因子,M为模数(modulus),第一式是以M为模数的同余式.给定初值x0(称为种子),递推计算出r1,r2,…,即在(0,1)上均匀分布的随机数序列.例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.混合同余法递推公式为MxrMCxxnnnn)(mod1用模M去除λxn+C的余数其中,C是非负整数.例3:选λ=97,C=3,M=1000,得递推公式1000)1000(mod3971nnnnxrxx取定种子x0=71,得97x0+3=6890,x1=890,r1=0.89097x1+3=86333,x2=333,r2=0.33397x2+3=32304,x3=304,r3=0.30497x3+3=29491,x4=491,r4=0.49197x4+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.对数列进行统计检验从计算机中直接调用某种分布的随机数同样存在类似问题.x。=1,λ=513,M=236(L=234≈2×1010)1)周期的长度取决于参数x0,入,M的选择;2)通过适当选取参数可以改善随机数的统计性质.几组供参考的参数值:x。=1,λ=7,M=1010(L=5×107)1.选择模拟参数在计算机上编程产生随机数还应注意浮点运算对周期的影响x。=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)需判断是否具有较好的统计性质:独立性均匀性进行统计检验三.任意分布随机数的模拟l.离散型随机数的模拟设随机变量X的分布律为,2,1,,01)()0(nniipPPn令将{P(n)}作为区间(0,1)的分点:P(0)P(1)P(2)P(3)01……),2,1(,}{ipxXPii若随机变量R~U(0,1),有产生X的随机数的算法步骤:(1)产生一个(0,1)区间上均匀分布随机数r(RND);(2)若P(n-1)<r≤P(n),则令X取值为xn.例3离散型随机变量X的分布律如下X=xP(x)0120.30.30.4),2,1(,}{)1()()()1(npPPPRPPnnnnn}{}{)()1(nnnxXPRP令),2,1(,}{npxXPnn有设r1,r2,…,rN是RND随机数,令iiiirrrx6.0,26.03.0,13.00,0x1,x2,…,xN即具有X的分布律的随机数.从理论上讲,已解决了产生具有任何离散型分布的随机数的问题.具体执行仍有困难,如X的取值是无穷多个的情况.可利用分布的自身特点,采用其他的模拟方法.例4随机变量X~B(n,p),其分布律为随机变量X是n次独立贝努里试验中,事件A发生的总次数,其中p=P(A).在计算机上模拟n重贝努里试验来产生二项分布的随机数.当p较大而计算精度要求较高时),,2,1(,)1(}{nkppCkXPknkkn10p2)统计ri(i=1,2,…,n)中使得重复循环得到:n1,n2,…,nk即所求随机数列.01p练习题:(1)生成100个服从B(20,0.3)的随机数(2)如何模拟参数为λ的泊松分布随机数?ri≤p的个数ni..算法步骤:1)产生n个RNDr1,r2,…,rn;2.连续型随机数的模拟利用在(0,1)区间上均匀分布的随机数来模拟具有给定分布的连续型随机数.两种方法反函数法舍选法1)反函数法设连续型随机变量Y的概率函数为f(x),需产生给定分布的随机数.算法:1)产生n个RND随机数r1,r2,…,rn;;)()2iyiydyyfri中解出从等式所得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)(xxxxxG若Y的概率密度为f(y),由Y=F-1(X)可得YdyyfYFX)()(对给出定的(0,1)上均匀分布随机数ri,则具有给定分布的随机数yi可由方程iyidyyfr)(解出.例5模拟服从参数为λ的指数分布的随机数,其概率密度函数为.0,0,0,)(xxexfxiyidyyfr)(代入公式iyiyxiedxer10有)1ln(1iiry可得若随机变量)X~U(0,1)1-X~U(0,1)(1-ri)与ri均为RND随机数模拟公式可改写为iiryln1问题:请考虑如何利用此公式模拟泊松流?优点:一种普通而适用的方法;缺点:当反函数不存在或难以求出时,不宜于使用.练习:生成100服从参数为10的指数分布的随机数。2)舍选法基本思想:实质上是从许多RND随机数中选出一部分,使之成为具有给定分布的随机数.算法步骤:(1)选取常数λ,使λf(x)<1,x∈(a,b);(2)产生两个RND随机数r1、r2,令y=a+(b-a)r1;(3)若r2≤λf(y),则令x=y,设随机变量X的概率密度函数为f(x),存在实数ab,使P{aXb}=1,否则剔除r1和r2,重返步骤(2).重复循环,产生的随机数x1,x2,…,xN的分布由概率函数f(x)确定.舍选法算法原理分析:设P{a<Z<b}=1,Z的概率密度为f(z),1.选常数λ,使λf(z)≤1,z∈(a,b);2.随机变量X1,X2相互独立Xi~U(0,1),令Y1=a+(b-a)X1~U(a,b);3.若X2≤λf(Y1),则令X=Y1,否则剔除X1,X2重复到(2)。则随机变量X的分布与Z相同。注,1)(badxxf若不满足条件:可选取有限区间(a1,b1),使得1)(11badxxfε是很小的正数.例如取a1=μ-3σ,b1=μ+3σ,有003.011122)(221dxebax在区间(a1,b1)上应用舍选法,不会出现较大的系统误差.3.正态随机数的模拟产生正态分布随机数的方法反函数法舍选法坐标变换法中心极限定理1)坐标变换法设r1,r2是RND随机数,令)2sin()ln2()2cos()ln2(22/11222/111rrxrrx则x1,x2是相互独立的标准正态分布的随机数.练习:用舍选取法生成100个服从以期望μ=20,标准差σ=10的正态分布的随机数。2)利用中心极限定理产生服从N(μ,σ2)的算法步骤:(1)产生n个RND随机数:r1,r2,…,rn,一般n≥10;/)()2(1122ninnirx计算若取n=12,简化为计算1216iirxx是服从标准正态分布的随机数(3)计算y=σx+μ.y是服从N(μ,σ2)分布的随机数.原理分析设ζ1,ζ2,…,ζn是n个相互独立的随机变量,且ζi~U(0,1),i=1,2,…,n,,121)()(21iiDE,有由中心极限定理知ninni1122/)(渐近服从正态分布N(0,l).
本文标题:随机数的生成方法
链接地址:https://www.777doc.com/doc-4209025 .html