如何生成两组相互独立的服从标准正态分布的随机数(推导过程)
预备知识:均匀分布的特殊地位
设F(x)满足:(1)单调不减(2)F(−∞)=0, F(∞)=1 (3)左连续。对于0≤y≤1,定义F−1(y)=inf{x:F(x)>y}为F(x)的反函数
可见任何分布的分布函数均满足上面条件
若ξ服从F(x),记θ=F(ξ),可知0≤θ≤1
其分布函数:
Fθ(x)=p(θ<x)=p(F(ξ)<x)=p(ξ<F−1(x))=F(F−1(x))=x
可得,θ的分布函数:
Fθ(x)=⎩⎪⎨⎪⎧1x0x>10≤x≤1x<0
θ的密度函数:
pθ(x)={100≤x≤1其他
所以θ服从0-1均匀分布
任意变量经过自身分布函数的变换后就变成了0-1均匀分布,相反,若θ∼U[0,1],取ξ=F−1(θ),其中F−1(x)是ξ的分布函数的反函数,则此时ξ服从响应的分布函数。因此,可由生成的一组服从U[0,1]分布的变量θ,经过F−1(θ)变换后生成服从相应分布的一组变量。
这是对可以写出分布函数并能求逆的一些随机变量,生成对应分布随机数值的一种方法。
例如指数分布:
ξ∼p(x)={λe−λx0x≥0, λ>0x<0
F(x)={1−e−λx0x≥0, λ>0x<0
生成θ∼U[0,1]的一组随机数(上图),将该随机数进行变换:x=−1/2ln(1−θ) ,这里参数取λ=2。生成的新的一组数符合指数分布(下图)。
对于标准正态分布N(0,1),它的密度函数:
p(x)=2π1e−2x2
难以根据分布函数求逆获取相应的随机数,这里提出新的方法。
生成两组独立的服从标准正态分布的随机数
背景题目:
设ξ、η独立同分布于N(0,1),即:
pξ(x)=2π1e−2x2pη(y)=2π1e−2y2
两者相互独立,联合密度函数等于边际密度函数乘积:
(ξ,η)∼p(x,y)=2π1e−2x2+y2
设变量(ρ,ϕ)满足:
(ρ,ϕ)=f(ξ,η):{ρ=(ξ2+η2)1/2ϕ=tan−1(η/ξ)
则:
(ξ,η)=f−1(ρ,ϕ)=h(ρ,ϕ):{η=ρcosϕξ=ρsinϕ
雅可比行列式:
∣J∣=∣∣∣∣∣∂ρ∂h1∂ρ∂h2∂ϕ∂h1∂ϕ∂h1∣∣∣∣∣=∣∣∣∣cosθsinθ−rsinθrcosθ∣∣∣∣=r
可求得(ρ,ϕ)联合密度函数:
(ρ,ϕ)∼q(r,θ)=p(x,y)∣J∣=2π1e−2x2+y2∗r=2π1e−2(rcosθ)2+(rsinθ)2∗r=2π1e−2r2∗r=re−2r2∗2π1=qρ(r)∗qϕ(θ)
恰好是两个独立的分布的乘积:瑞利分布和U[0,2π]
瑞利分布和均匀分布可以根据 均匀分布的特殊地位,首先生成两组0-1均匀分布的变量u1和u2,通过瑞利分布函数、U[0,2π]分布函数反函数的变换使得两组数分别满足瑞利分布和U[0,2π]分布。再将两组数根据如下变换:
{ξ=ρcosϕϕ=ρsinϕ
得到两组独立的标准正态分布
具体操作:
生成两组0-1均匀分布随机数u1和u2
已求得瑞利分布和U[0,2π]的密度函数,求他们的分布函数:
瑞利分布(r>0):
F(r)=1−e−2r2
U[0,2π] 均匀分布(0≤θ≤2π):
G(θ)=2πθ
反函数:
瑞利分布:
F−1(u1)=[−2ln(1−u1)]1/2
U[0,2π] 均匀分布:
G−1(u2)=2πu2
再代入:
ξ=[−2ln(1−u1)]1/2cos(2πu2)ϕ=[−2ln(1−u1)]1/2sin(2πu2)
则ξ和ϕ是相互独立的N(0,1)随机数。
也可直接写为:
ξ=[−2ln(u1)]1/2cos(2πu2)ϕ=[−2ln(u1)]1/2sin(2πu2)
u1和u2均是0到1区间内,(1−u1)和u1是一样的
试验如下(matlab):
u1=rand(1,10000)
u2=rand(1,10000)
y1=sqrt(-2*log(1-u1)).*cos(2*pi*u2)
y2=sqrt(-2*log(1-u1)).*sin(2*pi*u2)