统计计算第四章离散随机变量的生成
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
X=rep(0,n)
p=c(0.11,0.12,0.09,0.08,0.12,0.1,0.09,0.09,0.1,0.1)
for(i in 1:n){
repeat{
u1=runif(1)
Y[i]=floor(10*u1)+1
u2=runif(1)
总体均值即可。
所以只要生成k个随机数U
,
i
令X i Int (nU i ) 1,
计算a( X i ),i 1,2, , k,
则有a k a( X i ). i1 k
例3 几何随机变量的生成
解: 几何随机变量的分布律为
P( X i) pqi1, i 1
易得
上述两种算法中,算法二更有效。
例2 随机排列的生成
如何得到一个1,2, , n的随机排列?
解: 算法一
在1,2, , n中任选一个,将其放在位置n; 在剩余n 1个中任选一个,将其放在位置n 1; 在剩余n 2个中任选一个,将其放在位置n 2; 依次下去.
该算法的问题在于每次得到的数字不确定, 每次都要判断该数字是否在前面出现过。
为x0 x1 x2 , 则F ( xk )
k i0
pi,其逆变换为
X F 1(U) xj , 当F( xj1) U F(xj )
因 此 , 得 到X的方法是先生成U (0,1)分 布 的 随 机 数U, 然 后 通 过 逆 变 换F 1(U )得 到X。 这 种 生 成 随机数的方法称为逆变换 法 。
得到的变量列X1 , , X niid, 且服从b(1, p)。
算法二 不妨设p 0.5.
先 由X
Int
lnU ln q
1生 成 一 个 几 何 分 布 随 机数j;
如果j n, 令X i 0, i 1, , n;
如果j n, 令X1 X j1 0, X j 1;
步骤2:生成一个U (0,1)分布的随机数U ;
步骤3:如U pY , 令X Y且停止, 否则, 转步骤1; cqY
生成概率分布
为q
的
j
变
量Y
生成随 机数U
U pY cqY
是
X Y
否
定理
筛选法生成的随机变量X的概率分布函数为
P( X j) p j , j 0,1,
且该算法的迭代次数是一个均值为c的几何变量。
其中X ~ N(, )
1
E
|
X
|
1 E| Z |
其中Z ~ N(0,1)
1 0.798
第二种算法的用时要省。
4.3 二项随机变量的生成
参数为(n, p)的二项随机变量X的概率分布函数
P( X i) n! pi (1 p)ni , i 0,1, , n i!(n i)!
P( X FX1( y)) FX (FX1( y)) y
又易知Y的取值为[0,1]区间,所以Y ~ U(0,1)。
说明
当X是离散变量时,只要定义 F 1( y) x j , 当F( x j1) y F( x j )
上述结论仍成立。
几条注释
一、逆变换法
记X的分布函数为F,将xi , i 0从小到大排列
列X的
取
值x
j
可
以
降
低
搜索次数。
四、离散均匀随机变量的生成
如要求的是离散均匀随机变量,则上述区间 搜索是不必要的。只要令X Int (nU ) 1即可。
例1 用逆变换法给出一个分布列为
X P
1 0.20
2 0.15
3 0.25
4 0.40
的随机变量X的随机数。
解: 算法一
生成一个U (0,1)分布的随机数U ;
的 概 率 为1, 所 以 首 次 成 功 所 需 迭代 次 数 是 均 值 c
为c的 几 何 随 机 变 量 。 即 平均 搜 索 次 数 为c。
P( X j)
n
P(A
A
AB j )
前n1次 第n次
(1 1 )n1 p j
n
cc
pj
例 请用筛选法模拟一个概率分布为
步骤4:p p , F F p, i i 1;
i 1 步骤5:转向步骤3;
算法改进
步骤1:生成一个U (0,1)分布的随机数U ;
步骤2:i Int ( ), p i e , F p;
i! 步骤3:如果U F,进步骤4,5,否则,进步骤6; 步骤4:F F p, p ip , i i 1;
j1P(X i) 1 q j1, j 1
i 1
于是,可先生成随机数U,
并令X等于满足下式的j,
1 q j1 U 1 q j
于是得到
ln(1 U ) j ln(1 U ) 1
ln q
ln q
又注意到1 U ~ U(0,1),再利用记号Int (), 可把X表示成
证明 则
用A表示每次迭代变量Y的值被接受,
B j表示变量Y j.
P(Bj ) P(Y j) q j
P( A |
Bj)
P( A | Y
j)
pj cq j
由全概率公式
P(A)
j
P(Bj )P(A| Bj )
j
qj
pj cq j
1 c
而 每 次 迭 代 是 相 互 独 立的 , 每 次 产 生 一 个 接 受者
12345 0.11 0.12 0.09 0.08 0.12
6 0.10
7 0.09
8 0.09
9 0.10
01.010
的随机变量X的随机数。
解 考虑具有以下概率分布的变量Y :
12345 0.1 0.1 0.1 0.1 0.1
6 0.1
7 0.1
8 0.1
9 0.1
10 0.1
ห้องสมุดไป่ตู้
于是可以取c为 c max pj 1.2. qj
算法
步骤1:生成一个U(0,1)随机数U1, 令Y Int (10U1 ) 1;
步骤2:生成第二个U (0,1)随机数U 2 ;
步 骤3: 如 果U 2
pY , 令X 0.12
Y且 停 止;
步骤4:转向步骤1;
R程序:shai=function(n){
X
Int
lnU ln q
1
例4 独立伯努利随机变量的生成
试 给 出 生 成n个 独 立 同 分 布 , 参 数 为p的
伯 努 利 随 机 变 量X 1 ,
,
X
的
n
算
法
。
解: 算法一
生成n个U (0,1)的随机数U1, ,Un ,
令
1 X i 0
如果Ui p 如果Ui p
几点注释
一、上述算法的平均搜索次数为1 np;当p 0.5时, 先生成b(n,1 p)的随机数,然后用n去减,将减少 搜索次数。
二 、 可 以 先 生 成n个 伯 努 利 分 布 的 随 机 数, 然 后 求 和 可 得 二 项 分 布 的 随机 数 。
三、与泊松变量类似,先从其均值附近I Int(np) 向上或上下搜索,将使搜索更有效。
x0
x1 X
x
j
如 果U p0 如 果p0 U p0 p1
j 1
j
如 果 pi U pi
i0
i0
命题 设随机变量X的分布函数FX ( x)是严增函数,
则Y FX ( X )服从区间(0,1)上的均匀分布。
证明 FY ( y) P(Y y) P(FX ( X ) y)
4.4 筛选技术
设已有生成变量Y ~ {q j , j 0}的有效算法,则 可以基于此得到变量X ~ { pj , j 0}的随机数。
设c是一常数,且对所有满足q j 0的j,有
pj c qj
筛选法以概率 pY 接受变量Y的模拟值y。 cqY
筛选法
步骤1:生成一个概率分布为q j的随机数Y ;
第4章 离散随机变量的生成
4.1 逆变换法 4.2 泊松随机变量的生成 4.3 二项随机变量的生成 4.4 筛选技术 4.5 复合法 4.6 随机向量的生成
4.1 逆变换法
设要生成一个概率分布为P( X x j ) p j , j 0,1,2, 的离散随机变量,可以先生成一个
(0,1)均匀分布的随机数U , 且令:
如果j n, 重复上述操作以得到其余n j个伯努利 随机变量的值。
4.2 泊松随机变量的生成
由泊松随机变量X的概率分布函数
pi
P(X
i)
i
i!
e ,
i 0,1,
可得如下递推式
pi1 i 1 pi .
生成泊松随机变量的算法
步骤1:生成一个U (0,1)分布的随机数U ; 步骤2:i 0, p e , F p; 步骤3:如果U F,令X i且停止;
算法二:位置随机排列
设数列的初始顺序为P1P2 Pn
在1,2, , n位置中任选一个,将其位置的数 与位置n上的数互换;
在1,2, , n 1位置中任选一个,将其位置的 数与位置n 1上的数互换;
依次下去. 该算法的好处在于每次都是等可能地在数字 1,2, …,k中等可能地抽取,选的是位置,与前一 个数字是什么无关,不需判断。
i 1 步骤5:转向步骤3;
R程序:
rb=function(m,n,p){ Y=rep(0,m)
for(j in 1:m){ c=p/(1-p);i=0;pr=(1-p)^n;F=pr
u=runif(1) while(u>=F){
pr=(c*(n-i)/(i+1))*pr;F=F+pr i=i+1 } Y[j]=i } Y }
步骤5:如U F,X i 1并停止,否则转步骤4;
步骤6:p p , F F p, i i 1;
i 1 步骤7:如U F,令X i并停止,否则转步骤6;
两种算法搜索次数对比
第一种算法平均搜索次数 1.
第二种算法平均搜索次数近似为
1 E[| X |]
算法二的步骤:
一、设P1P2 Pn是1,2, ,n的任一排列; 二、令k n; 三、生成一随机数U,记I Int (kU) 1; 四、交换PI 和Pk; 五、令k k 1,如果k 1,转至步骤三; 六、P1P2 Pn是所求随机排列;
例3 平均值的计算
请 近 似 计 算a
n i 1
ai, n
其
中n非
常
大
,
且ai
,
i 1, , n的值非常复杂,不易计算。
解: 题目中的均值可看成对以下变量求期望,
a1 a2 an
1 n
1 n
1 n
可 将 其 看 成 容 量 为n的 总 体 , 要 求 总 体 均 值,
只 要 抽 取 容 量 为k的 样 本 , 用 样 本 均 值 估计
二、算法步骤
生成一个随机数U;
如果U p0,令X x0且停止; 如果U p0 p1,令X x1且停止; 如果U p0 p1 p2,令X x2且停止;
三、搜索时间
生 成 一 个 离 散 变 量 所 需时 间 与 要 搜 索 的 区 间
个
数
成
正
比
,
按p
的
j
降
序
排
生成二项随机变量的算法
步骤1:生成一个U (0,1)分布的随机数U ; 步骤2:i 0, c p (1 p) , pr (1 p)n , F pr; 步骤3:如果U F,令X i且停止; 步骤4:pr c(n i) pr, F F pr, i i 1;
其中, p为概率。对该分布的直接抽样方法如下:
i-1
i
X i, 当 pk U pk
k= 0
k= 0
参数为(n, p)的二项随机变量X的概率分布函数
P( X i) n! pi (1 p)ni , i 0,1, , n i!(n i)!
可得如下递推式 P( X i 1) n i p P( X i). i 1 1 p
如果U 0.20,令X 1且停止;
如果U 0.35,令X 2且停止;
如果U 0.60,令X 3且停止;
否则令X 4.
算法二
生成一个U (0,1)分布的随机数U ; 如果U 0.40,令X 4且停止; 如果U 0.65,令X 3且停止; 如果U 0.85,令X 2且停止; 否则令X 1.