您的位置:首页 > 其它

利用均匀分布产生随机的正态分布的数据输入源

2009-03-23 15:14 281 查看
1.问题:

有一组关键词需要被依次测试,但是我们希望关键词的出现概率满足随机正态分布,关键词出现的概率可以控制。

2.解决方案:

显然,一般计算机只能提供均匀分布的随机数,无法满足我们的要求,所以我们必须要把均匀分布变换为正态分布;在解决了分布问题后,我们只需要将新的分布变量映射到我们的输入变量(对本例,即是关键词列表)即可。

3.变量映射:

对关键词按照我们希望的出现频率排序,然后依次编为0,1,2,....N。如果我们设定的随机分布均值为0,方差为我们所希望的频率最高的那些词的数目(如500),则显然,该正态分布的自定义域所选取的关键词的分布满足正态分布率。

4.正态分布的产生,可以有三种方法:

1. 反变换法:0 1之间的均匀分布,随机取一个数,作为正态分布的CDF值,逆向求出x。
2. 中心极限定理:>12个以上的均匀分布相加即得,注意最后要检查方差,进行校正。

3. Box-muller方法:详情可参考http://baike.baidu.com/view/1710258.html?fromTaglist

Box-muller方法的基本原理:先生成瑞利分布,然后乘以一个与之独立的0,2pi上均匀分布的值的余弦。

  其隐含的原理非常深奥,但结果却是相当简单。

  如果在 (0,1] 值域内有两个一致的随机数字 U1 和 U2,

  可以使用以下两个等式中的任一个算出一个正态分布的随机数字 Z:

  Z = R * cos( θ )  或  Z = R * sin( θ )

  其中,

  R = sqrt(-2 * ln(U2))

  θ = 2 * π * U1

  正态值 Z 有一个等于 0 的平均值和一个等于 1 的标准偏差,可使用以下等式将 Z 映射到一个平均值为 m、标准偏差为 sd 的统计量 X:

  X = m + (Z * sd)

总结:

为了生成正态分布的输入源,先利用4中的任一种方法生成符合要求的正态分布随机变量序列;

再利用3将该序列映射到具体的输入源中;

这样我们就可以得到一个符合条件的正态分布数据输入源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: