任意分布随机数生成

任意分布随机数生成

概率积分变换

若X为连续型随机变量,其cdf为FX,则
U = F X − 1 ( X ) ∼ U ( 0 , 1 ) U=F^{-1}_X(X) \sim U(0,1) U=FX1(X)U(0,1)
证明:
F X ( X = u ) = P ( X ≤ u ) F X − 1 ( u ) = { x ∣ F X ( x ) = u } = d e f inf ⁡ { x ∣ F X ( x ) = u } F_X(X=u)=P(X\leq u)\\ F^{-1}_X(u) =\{x|F_X(x)=u\}\overset{\underset{def}{}}{=}\inf\{x|F_X(x)=u\} FX(X=u)=P(Xu)FX1(u)={ xFX(x)=u}=definf{ xFX(x)=u}
U ∼ U ( 0 , 1 ) U\sim U(0,1) UU(0,1),则对所有 x ∈ R x\in \mathcal{R} xR,有
P ( F X − 1 ( U ) ≤ x ) = P ( i n f { t ∣ F X ( t ) = U } ≤ x ) = P ( U ≤ F X ( x ) ) = F U ( F X ( x ) ) = F X ( x ) = P ( X ≤ x ) P(F_X^{-1}(U)\leq x)=P(inf\{t|F_X(t)=U\}\leq x)\\ =P(U\leq F_X(x))=F_U(F_X(x))=F_X(x)=P(X\leq x) P(FX1(U)x)=P(inf{ tFX(t)=U}x)=P(UFX(x))=FU(FX(x))=FX(x)=P(Xx)
F X − 1 ( U ) F_X^{-1}(U) FX1(U)和X同分布。

取舍法

假设X和Y是随机变量,其pdf分别为f和g。满足:
f ( t ) g ( t ) ≤ c , ∀ t      s . t . f ( t ) > 0 \frac{f(t)}{g(t)}\leq c,\forall t\;\;s.t. f(t)>0 g(t)f(t)cts.t.f(t)>0
可用以下流程生成随机数:

  • 找一个可以方便生成随机数的随机变量Y,其pdf g满足 f ( t ) / g ( t ) ≤ c , ∀ t      s . t . f ( t ) > 0 f(t)/g(t)\leq c,\forall t\;\;s.t.f(t)>0 f(t)/g(t)c,ts.t.f(t)>0
  • 从g中产生一个随机数y。
  • 从均匀分布U(0,1)中产生一个随机数u。
  • 若u<f(y)/(cg(y)),则接受x=y,否则拒绝y,重复产生y,直到产生给定个数的x。

证明:

P(Y\leq y|U\leq\frac{f(Y)}{cg(Y)})=\frac{P(Y\leq y,U\leq\frac{f(Y)}{cg(Y)})}{P(U\leq \frac{f(Y)}{cg(Y)})}=\frac{P(U\leq\frac{f(Y)}{cg(Y)},Y\leq y)}{1/c}\
=\int_{-\infin}^y\frac{P(U\leq\frac{f(Y)}{cg(Y)},Y=\omega\leq y)}{1/c}g(\omega)d\omega\
=c\int_{-\infin}^y\frac{f(\omega)}{cg(\omega)}g(\omega)d\omega\
=F_X(y)

P ( Y ≤ y ∣ U ≤ f ( Y ) c g ( Y ) ) = P ( Y ≤ y , U ≤ f ( Y ) c g ( Y ) ) P ( U ≤ f ( Y ) c g ( Y ) ) = P ( U ≤ f ( Y ) c g ( Y ) , Y ≤ y ) 1 / c = ∫ − ∞ y P ( U ≤ f ( Y ) c g ( Y ) ∣ Y = ω ≤ y ) 1 / c g ( ω ) d ω = c ∫ − ∞ y f ( ω ) c g ( ω ) g ( ω ) d ω = F ( y ) P(Y\leq y|U\leq\frac{f(Y)}{cg(Y)})=\frac{P(Y\leq y,U\leq\frac{f(Y)}{cg(Y)})}{P(U\leq \frac{f(Y)}{cg(Y)})}=\frac{P(U\leq\frac{f(Y)}{cg(Y)},Y\leq y)}{1/c}\\ =\int_{-\infin}^y\frac{P(U\leq\frac{f(Y)}{cg(Y)}|Y=\omega\leq y)}{1/c}g(\omega)d\omega\\ =c\int_{-\infin}^y\frac{f(\omega)}{cg(\omega)}g(\omega)d\omega\\ =F(y) P(YyUcg(Y)f(Y))=P(Ucg(Y)f(Y))P(Yy,Ucg(Y)f(Y))=1/cP(Ucg(Y)f(Y),Yy)=y1/cP(Ucg(Y)f(Y)Y=ωy)g(ω)dω=cycg(ω)f(ω)g(ω)dω=F(y)

P ( U ≤ f ( Y ) c g ( Y ) ) = ∫ − ∞ ∞ f ( y ) c g ( y ) × g ( y ) d y = 1 c ∫ − ∞ ∞ f ( y ) d y = 1 c P(U\leq\frac{f(Y)}{cg(Y)})=\int_{-\infin}^\infin\frac{f(y)}{cg(y)}\times g(y)dy\\ =\frac{1}{c}\int_{-\infin}^\infin f(y)dy=\frac{1}{c} P(Ucg(Y)f(Y))=cg(y)f(y)×g(y)dy=c1f(y)dy=c1
2.
P ( U ≤ f ( Y ) c g ( Y ) ∣ Y ≤ y ) = P ( U ≤ f ( Y ) c g ( Y ) , Y ≤ y ) G ( y ) = ∫ − ∞ y P ( U ≤ f ( Y ) c g ( Y ) ∣ Y = ω ≤ y ) G ( y ) g ( ω ) d ω = 1 G ( y ) ∫ − ∞ y f ( ω ) c g ( ω ) g ( ω ) d ω = F ( y ) c G ( y ) P(U\leq\frac{f(Y)}{cg(Y)}|Y\leq y)=\frac{P(U\leq\frac{f(Y)}{cg(Y)},Y\leq y)}{G(y)}\\ =\int_{-\infin}^y\frac{P(U\leq\frac{f(Y)}{cg(Y)}|Y=\omega\leq y)}{G(y)}g(\omega)d\omega\\ =\frac{1}{G(y)}\int_{-\infin}^y\frac{f(\omega)}{cg(\omega)}g(\omega)d\omega =\frac{F(y)}{cG(y)} P(Ucg(Y)f(Y)Yy)=G(y)P(Ucg(Y)f(Y),Yy)=yG(y)P(Ucg(Y)f(Y)Y=ωy)g(ω)dω=G(y)1ycg(ω)f(ω)g(ω)dω=cG(y)F(y)
3.
P ( Y ≤ y ∣ U ≤ f ( Y ) c g ( Y ) ) = P ( U ≤ f ( Y ) c g ( Y ) ∣ Y ≤ y ) P ( Y ≤ y ) P ( U ≤ f ( Y ) c g ( Y ) ) = F ( y ) c G ( y ) G ( y ) 1 / c = F ( y ) P(Y\leq y|U\leq\frac{f(Y)}{cg(Y)})=\frac{P(U\leq\frac{f(Y)}{cg(Y)}|Y\leq y)P(Y\leq y)}{P(U\leq\frac{f(Y)}{cg(Y)})}\\ =\frac{F(y)}{cG(y)}\frac{G(y)}{1/c}=F(y) P(YyUcg(Y)f(Y))=P(Ucg(Y)f(Y))P(Ucg(Y)f(Y)Yy)P(Yy)=cG(y)F(y)1/cG(y)=F(y)
故满足条件 U ≤ f ( Y ) c g ( Y ) U\leq\frac{f(Y)}{cg(Y)} Ucg(Y)f(Y)时,Y的条件分布概率是F(y)。

为了得到最准确的分布,最好c=max(f(t))/min(g(t))。但某些时候这样可能导致接受率过低。可以人为减小c来增大接受率(增大太多生成的分布会偏离目标分布, P ( U ≤ f ( Y ) c g ( Y ) = 1 c P(U\leq\frac{f(Y)}{cg(Y)}=\frac{1}{c} P(Ucg(Y)f(Y)=c1不严格成立)。

猜你喜欢

转载自blog.csdn.net/qq_39573785/article/details/108578530