正态分布的随机数生成算法
2016-09-08 16:01
176 查看
一、正态分布的随机数生成算法
前面介绍的都是均匀分布的随机数生成算法,在科学及工程应用中,正态分布的随机数也是经常用到的。对于一个给定的正态分布,描述该正态分布的参数包括均值μ和方差,在数学上,一种近似的产生正态分布的算法如下:
Ri为[0,1]之间的均匀分布的随机数。当n趋向于无穷大时,得到的随机分布为正态分布。关于这个算法更为详细的数学讨论,读者可以参阅概率统计相关的书籍,这里将直接引用。
在实际应用中,不可能取n为无穷大。一般来说,n足够大就可以了。为了计算的方便,可以取n=12,这样上式分母中的根号便可以忽略,而且得到的结果也已经足够形成正态分布了。
按照上述算法,可以编写正态分布的随机数生成算法,代码示例如下:
在上述代码中,输入参数u即正态分布的均值μ,输入参数t即正态分布的方差,输入参数r 为随机种子在该程序中,使用了前面的[0, 1]之间均匀分布的随机数算法Rand0l()。
下面结合一个完整的实例来分析如何产生需要的正态分布随机数。假设需要的正态分布均值//=2.0,方差=3.52。完整的程序代码示例如下:
http://www.manonggu.com/suancheng/view653.html
附件:http://down.51cto.com/data/2368136
前面介绍的都是均匀分布的随机数生成算法,在科学及工程应用中,正态分布的随机数也是经常用到的。对于一个给定的正态分布,描述该正态分布的参数包括均值μ和方差,在数学上,一种近似的产生正态分布的算法如下:
Ri为[0,1]之间的均匀分布的随机数。当n趋向于无穷大时,得到的随机分布为正态分布。关于这个算法更为详细的数学讨论,读者可以参阅概率统计相关的书籍,这里将直接引用。
在实际应用中,不可能取n为无穷大。一般来说,n足够大就可以了。为了计算的方便,可以取n=12,这样上式分母中的根号便可以忽略,而且得到的结果也已经足够形成正态分布了。
按照上述算法,可以编写正态分布的随机数生成算法,代码示例如下:
在上述代码中,输入参数u即正态分布的均值μ,输入参数t即正态分布的方差,输入参数r 为随机种子在该程序中,使用了前面的[0, 1]之间均匀分布的随机数算法Rand0l()。
下面结合一个完整的实例来分析如何产生需要的正态分布随机数。假设需要的正态分布均值//=2.0,方差=3.52。完整的程序代码示例如下:
http://www.manonggu.com/suancheng/view653.html
附件:http://down.51cto.com/data/2368136
相关文章推荐
- 算法问题征解:怎样生成随机数而不借助任何工具?
- 生成随机数的一个可靠算法,高质量的均匀分布的随机函数
- 非重复随机数生成算法
- 生成不重复的随机数数组,算法优化
- 随机数生成算法-初探
- 一个简单的随机数生成算法实现(C++)
- C++生成随机数:正态分布(normal distribution)
- C语言--生成正态分布随机数
- 生成n个从1到M(n <= M)之间的不重复的随机数问题(洗扑克牌算法)
- 随机数生成算法
- 随机数生成算法的研究
- 生成互不相同随机数的两种算法
- 随机数:关于用Rand7生成Rand10的最准确的算法(MS中的一道题)--仿真证明
- C++生成随机数:高斯/正态分布(gaussian/normal distribution)
- 生成不重复随机数的一种算法。
- 生成满足正态分布的随机数
- 随机数生成算法
- 生成不重复随机数的一种算法
- C#实现的不重复随机数序列生成算法
- PHP实现加权随机数(Weighted Random sampling)的生成算法