首页 > 其他 > 详细

蒙特卡洛——使用CDF反函数生成非均匀随机数

时间:2021-04-17 11:02:28      阅读:18      评论:0      收藏:0      [点我收藏+]

均匀随机数生成

??先来说说均匀随机数生成,这是非均匀随机数的生成基础。

??例如,我们现在有drand()函数,可以随机生成[0,1]范围内的均匀随机数.

要求一个drand2()函数,能够生成[0,2]内的均匀随机数。

??显然有:

\[drand2()=2*drand() \]


??但是很多时候,我们希望生成的随机数是有一定概率偏向的。

??比如生成[0,2]的随机数,越偏向2的数,出现的概率越大,显然上面的\(2*drand()\)无法满足要求

??我们的随机数的概率密度分布如下:

技术分享图片

生成指定概率密度的随机数

??先上结论:

??设概率密度函数\(f(x)\),概率累计分布函数\(F(x)\)

??生成概率密度为p(x)的随机数的函数如下:

\[F^{-1}(drand()) \]


??那么,为什么使用**累积分布函数(CDF)**的反函数,就能生成符合概率密度(PDF)分布的随机数呢?

证明

??设概率密度函数\(f(x)\),概率累计分布函数\(F(x)\)\(\xi\)表示服从\((0,1)\)均匀分布的随机变量,变换函数为\(G\),随机变量\(X=G(\xi)\),其中\(F(x)\)为单调递增函数。

??由概率分布定义知:

\[P\{X<a\}=F(a) \]

\[P\{G(\xi)<a\}=F(a) \]

??若\(G(\xi)\)为单调递增函数,可得:

\[P\{\xi<G^{-1}(a)\}=F(a) \]

??已知\(\xi\)\((0,1)\)上均匀分布,可得:

\[P\{\xi<b\}=b,b \in (0,1) \]

\[P\{\xi<G^{-1}(a)\}=F(a)=G^{-1}(a) \]

??故有F,G互为反函数,即:

\[X=G(\xi)=F^{-1}(\xi) \]

更多拓展见:https://zhuanlan.zhihu.com/p/191487550

蒙特卡洛——使用CDF反函数生成非均匀随机数

原文:https://www.cnblogs.com/mingyangovo/p/14668731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!