【问题标题】:drawing random number from a standard normal distribution using the standard rand() functions使用标准 rand() 函数从标准正态分布中抽取随机数
【发布时间】:2012-02-03 02:54:08
【问题描述】:

所以大多数编程语言都包含一个 rand() 功能,您可以通过它生成一个介于 0 到 1 之间的随机数......

我的问题是,有没有办法操纵这个标准的 rand() 功能,以便您能够从具有均值和标准偏差的正态分布中提取随机数?

请注意,我不是在问一种语言是否内置了正态分布功能,我是在问你是否可以使用 rand() 函数“模拟”绘制正态分布随机变量...

【问题讨论】:

标签: math variables random statistics numbers


【解决方案1】:

这是一个简单的方法(来自here):

    static Random r = new Random();
    static double Normal(double mu, double sig)
    {
        double u, v, x, y, q;
        do
        {
            u = r.NextDouble();
            v = 1.7156 * (r.NextDouble() - 0.5);
            x = u - 0.449871;
            y = Math.Abs(v) + 0.386595;
            q = Math.Sqrt(x) + y * (0.19600 * y - 0.25472 * x);
        } while (q > 0.27597 && (q > 0.27846 || Math.Sqrt(v) > -4.0 * Math.Log(u) * Math.Sqrt(u)));
        return mu + sig * v / u;
    }

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 2019-06-04
    • 2014-05-25
    • 2010-12-12
    • 2014-01-05
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多