码迷,mamicode.com
首页 > 其他好文 > 详细

随机数生成算法

时间:2014-06-25 12:20:15      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   com   使用   

1、蒙特卡洛方法

蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,数学家冯·诺依曼用闻名世界的赌城——蒙特卡罗命名(就是那个冯·诺依曼)。
蒙特卡罗方法解题过程的主要步骤:
a.针对实际问题建立一个简单且便于实现的概率统计模型,使所求的量恰好是该模型的概率分布或数字特征。
b.对模型的随机变量建立抽样方法,在计算机上进行模拟测试,抽取足够多的随机数。
c.对模拟实验结果进行统计分析,给出所求解的“估计”。
d.必要时,改进模型以提高估计精度和减少实验费用,提高模拟效率。

2、冯·诺依曼

冯·诺依曼(John von Neumann,1903~1957),20世纪最重要的数学家之一,在现代计算机、博弈论和核武器等诸多领域内有杰出建树的最伟大的科学全才之一,被称为“计算机之父”和“博弈论之父”。主要贡献是:2进制思想与程序内存思想,当然还有蒙特卡洛方法。通过第一部分,可知,蒙特卡洛方法更多的是一种思想的体现(这点远不同于快排等“严格”类算法),下面介绍最常见的一种应用——随机数生成。

3、U(0,1)随机数的产生

对随机系统进行模拟,便需要产生服从某种分布的一系列随机数。最常用、最基础的随机数是在(0,1)区间内均匀分布的随机数,最常用的两类数值计算方法是:乘同余法和混合同余法。

乘同余法:bubuko.com,布布扣其中,bubuko.com,布布扣被称为种子,bubuko.com,布布扣是模,bubuko.com,布布扣是(0,1)区间的随机数。

混合同余法:bubuko.com,布布扣其中,bubuko.com,布布扣是非负整数。

这些随机数是具有周期性的,模拟参数的选择不同,产生的随机数质量也有所差异。更复杂的生成方法还有:

bubuko.com,布布扣

4、从U(0,1)到其它概率分布的随机数

离散型随机数的模拟

设随机变量X的概率分布为:bubuko.com,布布扣,分布函数有bubuko.com,布布扣

设随机变量U~U(0,1)的均匀分布,则bubuko.com,布布扣表明bubuko.com,布布扣的概率与随机变量u落在bubuko.com,布布扣bubuko.com,布布扣之间的概率相同。

例如:离散随机变量X有分布律

X 0 1 2
P(x) 0.3 0.3 0.4

U是(0,1)的均匀分布,则有bubuko.com,布布扣,这样得到的x便具有X的分布律。

连续型随机变量的模拟

常用的有两种方法:逆变换法和舍选法。逆变换法
定理:设随机变量Y的分布函数为F(y)是连续函数,而U是(0,1)上均匀分布的随机变量。另bubuko.com,布布扣,则X和Y具有相同的分布。

证明:由定义知,X的分布函数bubuko.com,布布扣
所以X和Y具有相同的分布。
这样计算得bubuko.com,布布扣,带入均匀分布的U,即可得到服从bubuko.com,布布扣的随机数Y。
例如:设X~U(a,b),则其分布函数为

bubuko.com,布布扣bubuko.com,布布扣。所以生成U(0,1)的随机数U,则bubuko.com,布布扣便是来自U(a,b)的随机数。

有些随机变量的累计分布函数不存在或者难以求出,即使存在,但计算困难,于是提出了舍选法
要产生服从bubuko.com,布布扣的随机数,设x的值域为[a,b],抽样过程如下:

1.已知随机分布bubuko.com,布布扣且x的取值区间也为[a,b],并要求bubuko.com,布布扣,如图:
bubuko.com,布布扣
2.从bubuko.com,布布扣中随机抽样得bubuko.com,布布扣,然后由bubuko.com,布布扣的均匀分布抽样得bubuko.com,布布扣
3.接受或舍弃取样值bubuko.com,布布扣,如果bubuko.com,布布扣舍弃该值;返回上一步,否则接受。几何解释如下:
bubuko.com,布布扣

常数c的选取:c应该尽可能地小,因为抽样效率与c成反比;一般取bubuko.com,布布扣。这里的bubuko.com,布布扣可以取均匀分布,这样由第二步中两个均匀分布便能得到其他任意分布的模拟抽样。

5、正态随机数的生成

除了上面的反函数法和舍选法,正态随机数还可以根据中心极限定理和Box Muller(坐标变换法)得到。

中心极限定理:如果随机变量序列 bubuko.com,布布扣独立同分布,并且具有有限的数学期望和方差bubuko.com,布布扣,则对于一切bubuko.com,布布扣

bubuko.com,布布扣
也就是说,当n个独立同分布的变量和,服从bubuko.com,布布扣的正态分布(n足够大时)。

设n个独立同分布的随机变量bubuko.com,布布扣,它们服从U(0,1)的均匀分布,那么bubuko.com,布布扣渐近服从正态分布bubuko.com,布布扣

Box Muller方法,设(X,Y)是一对相互独立的服从正态分布bubuko.com,布布扣的随机变量,则有概率密度函数:
bubuko.com,布布扣
bubuko.com,布布扣,其中bubuko.com,布布扣,则bubuko.com,布布扣有分布函数:
bubuko.com,布布扣
bubuko.com,布布扣,则分布函数的反函数得:bubuko.com,布布扣

如果bubuko.com,布布扣服从均匀分布U(0,1),则bubuko.com,布布扣可由bubuko.com,布布扣模拟生成(bubuko.com,布布扣也为均匀分布,可被bubuko.com,布布扣代替)。令bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣服从均匀分布U(0,1)。得:
bubuko.com,布布扣
X和Y均服从正态分布。用Box Muller方法来生成服从正态分布的随机数是十分快捷方便的。

随机数生成算法,布布扣,bubuko.com

随机数生成算法

标签:style   blog   http   color   com   使用   

原文地址:http://www.cnblogs.com/houkai/p/3807041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!