Box–Muller Transform

0. Abstract

这几天看了那么多采样, 回过头来, 仍然不知道最基本的 Normal Distribution 怎么采样. 于是查看 Normal distribution - Wikipedia, 有很多种采样方法, 不过多数还是要 approximate, 或者使用 rejection method, 似乎只有 Box–Muller method 是精确的解析式方法.

但 Wikipedia 对其的介绍很简洁, 看不出个所以然来. 即使是 Box–Muller transform - Wikipedia, 也讲的一头雾水. 最终看到 B 站视频 <Box Muller 算法推导>, 才豁然开朗, 这里记录其推导过程.

1. Box Muller 算法推导

Box Muller 算法: 设 U 1 , U 2 ∼ U n i f o r m ( 0 , 1 ) U_1, U_2 \sim Uniform(0,1) U1,U2Uniform(0,1), 且相互独立, 令 { X = − 2 l n U 1 c o s ( 2 π U 2 ) Y = − 2 l n U 1 s i n ( 2 π U 2 ) \left\{\begin{matrix} X = \sqrt{-2lnU_1} cos(2\pi U_2) \\ Y = \sqrt{-2lnU_1} sin(2\pi U_2) \end{matrix}\right. {X=2lnU1 cos(2πU2)Y=2lnU1 sin(2πU2), 则 X , Y ∼ N o r m a l ( 0 , 1 ) X, Y \sim Normal(0,1) X,YNormal(0,1), 且相互独立.

推导:
{ X = − 2 l n U 1 c o s ( 2 π U 2 ) = R c o s Θ Y = − 2 l n U 1 s i n ( 2 π U 2 ) = R s i n Θ ⟹ { R = − 2 l n U 1 Θ = 2 π U 2 R 2 = X 2 + Y 2 \begin{aligned} \left\{\begin{matrix} X = \sqrt{-2lnU_1} cos(2\pi U_2) = Rcos\Theta \\ Y = \sqrt{-2lnU_1} sin(2\pi U_2) = Rsin\Theta \\ \end{matrix}\right. \Longrightarrow & \left\{\begin{matrix} R = \sqrt{-2lnU_1} \\ \Theta = 2\pi U_2 \end{matrix}\right. \\ R^2 = X^2 + Y^2 \end{aligned} {X=2lnU1 cos(2πU2)=RcosΘY=2lnU1 sin(2πU2)=RsinΘR2=X2+Y2{R=2lnU1 Θ=2πU2 R R R 的累积分布函数: F R ( r ) = P ( R ≤ r ) = P ( − 2 l n U 1 ≤ r ) = P ( − 2 l n U 1 ≤ r 2 ) = P ( U 1 ≥ e x p ( − r 2 2 ) ) = 1 − e x p ( − r 2 2 ) f R ( r ) = r ∗ e x p ( − r 2 2 ) \begin{aligned} F_R(r) &= P(R \le r) = P(\sqrt{-2lnU_1} \le r) = P(-2lnU_1 \le r^2) = P(U_1 \ge exp(-\frac{r^2}{2})) \\ &= 1 - exp(-\frac{r^2}{2}) \\ f_R(r) &= r*exp(-\frac{r^2}{2}) \end{aligned} FR(r)fR(r)=P(Rr)=P(2lnU1 r)=P(2lnU1r2)=P(U1exp(2r2))=1exp(2r2)=rexp(2r2) 由于 U 1 U_1 U1 U 2 U_2 U2 相互独立, 所以 R R R Θ \Theta Θ 相互独立, 求两者联合概率分布: f R , Θ ( r , θ ) = f R ( r ) f Θ ( θ ) = r 2 π e x p ( − r 2 2 ) \begin{aligned} f_{R,\Theta}(r, \theta) = f_{R}(r)f_{\Theta}(\theta) = \frac{r}{2\pi} exp(-\frac{r^2}{2}) \end{aligned} fR,Θ(r,θ)=fR(r)fΘ(θ)=2πrexp(2r2) 继续求 ( X , Y ) (X,Y) (X,Y) 的联合概率分布: f X , Y ( x , y ) = f R , Θ ( r , θ ) ∣ ∂ ( r , θ ) ∂ ( x , y ) ∣ = r 2 π e x p ( − r 2 2 ) / ∣ ∂ ( x , y ) ∂ ( r , θ ) ∣ = r 2 π e x p ( − r 2 2 ) / ∣ c o s θ − r s i n θ s i n θ r c o s θ ∣ = 1 2 π e x p ( − r 2 2 ) = 1 2 π e x p ( − x 2 + y 2 2 ) = [ 1 2 π e x p ( − x 2 2 ) ] [ 1 2 π e x p ( − y 2 2 ) ] \begin{aligned} f_{X,Y}(x, y) =& f_{R,\Theta}(r, \theta) \left|\frac{\partial (r,\theta)}{\partial (x,y)}\right| \\ =& \frac{r}{2\pi} exp(-\frac{r^2}{2}) / \left|\frac{\partial(x,y)}{\partial(r,\theta)}\right| \\ =& \frac{r}{2\pi} exp(-\frac{r^2}{2}) / \begin{vmatrix} cos\theta & -rsin\theta \\ sin\theta & rcos\theta \end{vmatrix} \\ =& \frac{1}{2\pi} exp(-\frac{r^2}{2}) \\ =& \frac{1}{2\pi} exp(-\frac{x^2+y^2}{2}) \\ =& \left[\frac{1}{\sqrt{2\pi}} exp(-\frac{x^2}{2})\right] \left[\frac{1}{\sqrt{2\pi}} exp(-\frac{y^2}{2})\right] \end{aligned} fX,Y(x,y)======fR,Θ(r,θ) (x,y)(r,θ) 2πrexp(2r2)/ (r,θ)(x,y) 2πrexp(2r2)/ cosθsinθrsinθrcosθ 2π1exp(2r2)2π1exp(2x2+y2)[2π 1exp(2x2)][2π 1exp(2y2)] 很明显(或者可以积分求边缘分布证明): f X ( x ) = 1 2 π e x p ( − x 2 2 ) f Y ( y ) = 1 2 π e x p ( − y 2 2 ) \begin{aligned} f_X(x) = \frac{1}{\sqrt{2\pi}} exp(-\frac{x^2}{2}) \\ f_Y(y) = \frac{1}{\sqrt{2\pi}} exp(-\frac{y^2}{2}) \end{aligned} fX(x)=2π 1exp(2x2)fY(y)=2π 1exp(2y2) X , Y ∼ N o r m a l ( 0 , 1 ) X,Y \sim Normal(0,1) X,YNormal(0,1), 且相互独立.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值