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,U2∼Uniform(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=−2lnU1cos(2πU2)Y=−2lnU1sin(2πU2), 则 X , Y ∼ N o r m a l ( 0 , 1 ) X, Y \sim Normal(0,1) X,Y∼Normal(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=−2lnU1cos(2πU2)=RcosΘY=−2lnU1sin(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(R≤r)=P(−2lnU1≤r)=P(−2lnU1≤r2)=P(U1≥exp(−2r2))=1−exp(−2r2)=r∗exp(−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,Y∼Normal(0,1), 且相互独立.