我想在C#中编写一个方法来生成一个随机数,高斯分布在范围内[0:1]
(事先在[0-x]中).我找到了这段代码,但无法正常工作
Random rand = new Random(); //reuse this if you are generating many
double u1 = rand.NextDouble(); //these are uniform(0,1) random doubles
double u2 = rand.NextDouble();
double randStdNormal = Math.Abs( Math.Sqrt(-2.0 * Math.Log(u1)) *
Math.Sin(2.0 * Math.PI * u2));
Run Code Online (Sandbox Code Playgroud)
我写了一篇关于如何生成具有任何给定分布的随机数的博客文章:
http://ericlippert.com/2012/02/21/generate-random-non-uniform-data/
总结一下,你想要的算法是:
当然,如果您已经知道所需分布的分位数函数,则无需执行步骤一到步骤三。
归档时间: |
|
查看次数: |
9919 次 |
最近记录: |