第四章随机变量的产生一、离散型随机变量的产生(1)逆变换法:产生具有如下分布律的随机变量先产生一个随机数U,令{},0,1,,1iiiiPXxpip00101,,p,ixUpxUppXxU0i-1ijjj=0j=0若若+若pp算法:(1).生成一个随机数U(2)如果,则令且停止0Up0Xx(3)如果,则令且停止01Upp1Xx(4)如果,则令且停止012Uppp2Xx(5)……>X=rep(0,100)>for(iin1:100){u=runif(1);if(u<0.2){X[i]=1}elseif(u<0.35){X[i]=2}elseif(u<0.65){X[i]=3}elseX[i]=4}>X[1]323312423311143411444343223443441411[37]334423134434343314144333443214232424[73]4321433344143342344444333422例1:想产生如下分布律的随机变量100个X1234P0.20.150.30.35或者用X=sample(c(1,2,3,4),100,c(0.2,0.15,0.3,0.35),replace=TRUE)注:若想生成离散型均匀随机变量,即X以等概率取1,2,…,n中的任何一个,即{}1/,1,2,...,PXinin因为,先生成一个随机数U,则当时,X=i1iiUnn即等价地()1XIntnUR程序:U=runif(100)X=floor(n*U)+1则在位置1,2,…,n中随机地任选一个,之后把此位置上的数与位置n上的数互换.然后,从位置1,2,…,n-1中随机地任选一个,再把此位置上的数与位置n-1上的数互换,依此类推.例2:(随机排列的生成)想生成一个随机排列,它的n!种排列是等可能地.首先随机地在数1,2,3,…,n中任选一个,并把此数放在位置n上.然后在其余n-1个数中随机地选一个把此数放在位置n-1上;再从其余n-2个数中随机地任选一个,并把此数放在位置n-2上,依此类推.另一种方法:若此数的初始排序是12,,,nPPP2.令k=n算法:1.设是1,2,…,n的任一排列(如:1,2,…,n)12,,,nPPP3.生成随机数U,并设I=Int(kU)+1,IkPP4.交换5.令k=k-1,若k>1,则转至步骤3.6.为所求排列.1,,kPPR程序:pf=function(n){X=sample(n);k=nwhile(k>1){u=runif(1);I=floor(k*u)+1V=X[k];X[k]=X[I];X[I]=V;k=k-1}X}例3:(几何随机变量)参数为p的几何随机变量X的分布律为1{}(1),1iPXippi表示在成功概率为p的多次独立重复试验中成功首次出现时的试验此数.由于111{}1{1}1(1)jjiPXiPXjp于是,当11(1)1(1),jjpUpXj等价地1(1)1(1)jjpUp即ln(1)min{:(1)1}min{:}ln(1)jUXjpUjjp所以ln()1ln(1)UXIntpR程序:ge.f=function(n,p){U=runif(n)X=floor(log(U)/log(1-p))+1X}Poisson随机变量的产生其算法如下:Step1:生成随机数UStep2:Step3:若U=F){pr=(c*(n-i)/(i+1))*pr;F=F+pri=i+1}Y[j]=i}Y}(2)筛选法:首先假设我们已经有一种产生概率分布为{,0}jqj的随机变量的有效办法,基于此方法,可以模拟一个分布律为{,0}ipi的随机变量。0jjp的设c为一常数且对于所有满足有jjpcq步骤1:模拟一个分布律为的随机变量Y步骤2:生成一个随机数U步骤3:如果,则令X=Y且停止。否则转至步骤1用筛选法模拟分布为{}jpPXj的随机变量X的算法jqYYpUcq例:模拟一个取值为1,2,3,4,…,10的随机变量,其概率分别为0.11,0.12,0.09,0.08,0.12,0.1,0.09,0.09,0.1,0.1.解:一种方法是利用逆变换法;另外一种方法是利用筛选法选取以概率q=1/10取值为1,2,…,10的...