分享

服从高斯分布的随机生成器

 kingwenguang 2015-10-13


完成Box-Muller Transformation的证明

在这之前,我们首先引出Inverse transform sampling定理(中文可能是反变换定理,反变换法吧。)

定义:假设u=F(x)是一个连续累计分布函数(也就是一个密度函数的积分), F-1为其反函数。 

定理:如果U是一个均匀分布(0,1)的随机变量的话,则F-1(U)服从函数F给出的分布。

证明:

这样就导出一个方法:

输入:一组[0,1]之间的满足均匀分布的随机数U

任务:给定一个分布的密度函数f(x),要生成满足这一分布的一组随机数。

输出:一组满足f(x)的随机数V

方法:1)求f(x)的分布函数F(x)

        2)求F(x)的反函数F'(x)

        3)对于U中的每一个元素u,将F'(u)加入序列V中。

 

据此,我们发现

只要求出正态分布的密度函数的分布函数的反函数,然后直接代入服从均匀分布的随机数

所得的结果即为服从正态分布的随机数了


接下来如何导出正态分布pdf(probabilistic distribution function概率密度函数)的分布函数的反函数呢?(太拗口了。。。)

我们都非常熟悉了正态分布的pdf,但是其分布函数(也就是从0-x的积分)据我所知很难搞定。

< 如果是无穷积分的话还有可能搞出来(用个平方和的技巧) >

其实,我们这里使用和这个平方和技巧相同的方法。进行变形,就可以神奇的得到BoxMuller了~

 

过程如下:

使用两个正态分布的概率密度函数

以及

用上述的化为极坐标的技巧,

将x=rcos(theta), y=rsin(theta)

这样可以得到极坐标上的两个正交的服从正态分布的变量

概率为

具体步骤不再详述,利用了Jacobian行列式,然后就直接得到这个结果啦。

 

接下来根据上述的方法1)2)3)

步骤1) 首先对其分别积分,得到分布函数

以及

步骤2)

求上述函数的反函数

据此,我们其实已经证明了Marsaglia polar method方法。所以这个才叫做polar法~

步骤3)

代入服从均匀分布的随机数,得到

因为服从均匀分布(0,1),所以可以将

终于,我们对Box-Muller Transformation证明完毕。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多