рисование случайного числа из стандартного нормального распределения с использованием стандартных функций rand () - PullRequest
0 голосов
/ 05 января 2012

Таким образом, большинство языков программирования содержат функцию rand (), благодаря которой вы можете генерировать случайные числа от 0 до 1 ....

У меня вопрос: есть ли способ манипулировать этой стандартной функцией rand () так, чтобы вы могли вместо этого нарисовать случайное число из нормального распределения со средним и стандартным отклонением?

Обратите внимание, что я не спрашиваю, есть ли в языке встроенная функция нормального распределения, я спрашиваю, можете ли вы "смоделировать" рисование случайной величины нормального распределения с помощью функции rand () ...

1 Ответ

1 голос
/ 05 января 2012

Вот простой способ, который работает (от здесь ):

    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;
    }
...