题目36
证明:利用拒绝方法生成的随机变量所必须需要的迭代次数是几何随机变量,并估计出几何频率函数的参数。证明:为了保证较少的迭代次数选择的 M ( x ) M(x) M(x)必须接近出 f ( x ) f(x) f(x).
解题思路
参考本题中提到的
假设每次迭代生成的数据值能够被接受的概率为
λ
\lambda
λ,则需要k次迭代生成一个值的概率是:k-1次被拒绝第k次被接受,这是典型的几何分布参数为
λ
\lambda
λ
P
(
k
)
=
(
1
−
λ
)
k
−
1
λ
P(k)=(1-\lambda)^{k-1}\lambda
P(k)=(1−λ)k−1λ
几何分布的期望值为
1
λ
\frac{1}{\lambda}
λ1,即
λ
\lambda
λ越大k越小
估计参数:根据书中公式 P ( a c c e p t ) = 1 ∫ a b M ( x ) d x P(accept)=\frac{1}{\int_a^bM(x)dx} P(accept)=∫abM(x)dx1
要让 P ( a c c e p t ) P(accept) P(accept)最大则需要 M ( x ) M(x) M(x)越小,根据前提 M ( x ) > f ( x ) M(x)>f(x) M(x)>f(x)并且M(x)越小则M(x)越接近 f ( x ) f(x) f(x)
题目37
令
−
1
≤
x
≤
1
-1\leq x\leq 1
−1≤x≤1时
f
(
x
)
=
6
x
2
(
1
−
x
)
2
f(x)=6x^2(1-x)^2
f(x)=6x2(1−x)2.
a.说明利用拒绝方法由该密度函数生成随机变量的一个算法,采集试验中有多大比例接受所采取的步骤?
b.编写一个计算机程序实现这个算法.
解题思路
a.首先绘制出本函数曲线
经计算在x=-1时函数达到最大值24
选择一个平均分布随机变量
m
(
x
)
=
1
1
−
(
−
1
)
=
1
2
m(x)=\frac{1}{1-(-1)}=\frac{1}{2}
m(x)=1−(−1)1=21
令
M
(
x
)
=
q
m
(
x
)
M(x)=qm(x)
M(x)=qm(x).设置
q
=
48
q=48
q=48.这样
M
(
x
)
M(x)
M(x)为最贴近目标函数并且大于目标函数的平均分布
根据全概率公式
f
Y
(
y
)
=
∫
−
∞
∞
f
Y
∣
X
(
y
∣
x
)
f
(
x
)
d
x
f_Y(y)=\int_{-\infty}^{\infty}f_{Y|X}(y|x)f(x)dx
fY(y)=∫−∞∞fY∣X(y∣x)f(x)dx,套用在本题时Y是离散的分别是接受、拒绝.X是连续的在[-1,1]有定义
P
(
接
受
)
=
∫
−
1
1
f
(
x
)
M
(
x
)
m
(
x
)
d
x
=
∫
−
1
1
f
(
x
)
q
m
(
x
)
m
(
x
)
d
x
=
1
q
∫
−
1
1
f
(
x
)
d
x
将
本
题
中
的
f
(
x
)
与
q
代
入
=
1
48
∗
32
5
=
2
15
\begin{aligned} P(接受)&=\int_{-1}^{1}\frac{f(x)}{M(x)}m(x)dx\\ &=\int_{-1}^{1}\frac{f(x)}{qm(x)}m(x)dx\\ &=\frac{1}{q}\int_{-1}^{1}f(x)dx\\ 将本题中的f(x)与q代入\\ &=\frac1{48}*\frac{32}{5}\\ &=\frac2{15} \end{aligned}
P(接受)将本题中的f(x)与q代入=∫−11M(x)f(x)m(x)dx=∫−11qm(x)f(x)m(x)dx=q1∫−11f(x)dx=481∗532=152
b.编写一个计算机程序实现这个算法.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RandomGen
{
class Program
{
static int n = 100000; //生成随机变量的个数
static int i_total = 0; //统计生成的总数
static Random r = new Random();
static void Main(string[] args)
{
int temp = 0;
while (temp < n)
{
Console.WriteLine(GenerateSRD());
temp++;
}
Console.WriteLine("共生成{0}次,成功{1}次", i_total, n);
Console.Read();
}
/// <summary>
/// 生成一个随机变量
/// </summary>
static double GenerateSRD()
{
L1: double u1 = r.Next(-10000, 10000) / 10000.0000;
double u2 = r.NextDouble();
i_total++;
if (u2 < f(u1)/M(u1))
{
return u1;
}
goto L1; //重新执行
}
static double M(double x)
{
return 24;
}
static double f(double x)
{
double rt = 6 * Math.Pow(x, 2) * Math.Pow(1 - x, 2);
return rt;
}
}
经过多次测试,程序接受次数与总生成次数之比为1:7.5即 2 15 \frac2{15} 152
题目38
令
−
1
≤
x
≤
1
-1\leq x\leq 1
−1≤x≤1 和
−
1
≤
α
≤
1
-1\leq \alpha \leq 1
−1≤α≤1 时
f
(
x
)
=
1
−
α
x
2
f(x)=\frac{1-\alpha x}{2}
f(x)=21−αx.
a.说明利用拒绝方法由该密度函数生成随机变量的一个算法,
b.编写一个计算机程序实现这个算法.
解题思路
a.说明利用拒绝方法由该密度函数生成随机变量的一个算法,
1.
−
1
≤
x
≤
1
-1\leq x\leq 1
−1≤x≤1 和
−
1
≤
α
≤
1
-1\leq \alpha \leq 1
−1≤α≤1 区间内求
f
(
x
)
f(x)
f(x)的最大值
当
α
>
0
,
f
(
x
)
\alpha>0,f(x)
α>0,f(x)最大值是
1
+
α
2
\frac{1+\alpha}2
21+α
当
α
<
0
,
f
(
x
)
\alpha<0,f(x)
α<0,f(x)最大值是
1
−
α
2
\frac{1-\alpha}2
21−α
找到一个均匀分布函数 m ( x ) = 1 2 , M ( x ) = 1 + ∣ α ∣ 2 m(x)=\frac12,M(x)=\frac{1+|\alpha|}2 m(x)=21,M(x)=21+∣α∣
再按标准的拒绝方法进行随机变量的生成。
b.编写一个计算机程序实现这个算法.
略,这个代码比上一题代码多一个参数即可
题目39
证明:如下生成离散型随机变量的方法是可行的(D.R.Fredkin).具体地,假设 X X X以概率为 p 0 , p 1 , p 2 , . . . 分 别 取 值 0 , 1 , 2 , . . . p_0,p_1,p_2,...分别取值0,1,2,... p0,p1,p2,...分别取值0,1,2,...令 U U U是均匀随机变量,如果 U < p 0 U<p_0 U<p0,返回 X = 0 X=0 X=0,,否则,用 U − p 0 U-p_0 U−p0代替 U U U; 如果新生成的 U U U小于 p 1 p_1 p1,返回 X = 1 X=1 X=1,否则,从 U U U中减去 p 1 p_1 p1;然后新生成的 U U U与 p 2 p_2 p2比较,等等。
解题思路
这是逆变化法,
设
X
X
X的累计分布函数是
F
X
(
x
)
F_X(x)
FX(x),则
U
=
F
X
(
x
)
U=F_X(x)
U=FX(x)服务区间(0,1)上的均匀分布。(参见本书中的命题2.3.3)
根据本书中的命题2.3.4 令
U
U
U是[0,1]上的均匀分布,
X
=
F
−
1
(
U
)
,
X=F^{-1}(U),
X=F−1(U),那么
X
X
X的cdf是F
P
(
X
≤
x
)
=
P
(
F
−
1
(
U
)
≤
x
)
=
P
(
U
≤
F
(
x
)
)
=
F
(
x
)
P(X\leq x)=P(F^{-1}(U)\leq x)=P(U\leq F(x))=F(x)
P(X≤x)=P(F−1(U)≤x)=P(U≤F(x))=F(x)
所以根据上述证明,本题方法生成的随机变量的累计分布函数就是 F ( X ) F(X) F(X)
题目40
假定
X
X
X和
Y
Y
Y是离散的随机变量,具有函数概率质量函数
p
X
Y
(
x
,
y
)
p_{XY}(x,y)
pXY(x,y)证明:如下步骤可以生成随机变量
X
∼
p
X
∣
Y
(
x
∣
y
)
X\sim p_{X|Y}(x|y)
X∼pX∣Y(x∣y)
a.生成
X
∼
p
X
(
x
)
X\sim p_X(x)
X∼pX(x).
b.以概率
p
(
y
∣
X
)
p(y|X)
p(y∣X)授受
X
X
X.
c.如果接受
X
X
X,迭代终止,返回
X
X
X,否则,重新回到步骤a.
解题思路
根据题意,需要求P(X=x|接受)即是生成随机变量的质量函数
P
(
X
=
x
∣
接
受
)
=
P
(
X
=
x
且
接
受
)
P
(
接
受
)
=
P
(
授
受
∣
X
=
x
)
P
(
X
=
x
)
P
(
接
受
)
利
用
全
概
率
公
式
求
得
P
(
接
受
)
=
P
Y
(
y
)
=
∑
x
p
Y
∣
X
(
y
∣
x
)
p
X
(
x
)
=
p
(
y
∣
X
)
p
(
x
)
p
Y
(
y
)
=
p
X
Y
(
x
,
y
)
p
Y
(
y
)
=
p
X
∣
Y
(
x
∣
y
)
\begin{aligned} P(X=x|接受)&=\frac{P(X=x且接受)}{P(接受)}\\ &=\frac{P(授受|X=x)P(X=x)}{P(接受)}\\ 利用全概率公式求得\\ P(接受)=P_Y(y)=\sum_{x}p_{Y|X}(y|x)p_X(x) \\ &=\frac{p(y|X)p(x)}{p_Y(y)}\\ &=\frac{p_{XY}(x,y)}{p_Y(y)}\\ &=p_{X|Y}(x|y) \end{aligned}
P(X=x∣接受)利用全概率公式求得P(接受)=PY(y)=x∑pY∣X(y∣x)pX(x)=P(接受)P(X=x且接受)=P(接受)P(授受∣X=x)P(X=x)=pY(y)p(y∣X)p(x)=pY(y)pXY(x,y)=pX∣Y(x∣y)