Программа использует Central Limit Theorem - суммы независимых одинаково распределенных случайных величин X
с конечной дисперсией, асимптотически сходятся к нормальному (ака гауссова) распределения, средний представляет собой сумму средств, а дисперсия - это сумма дисперсий. Масштабируя это по N, количество суммируемых X
дает среднее значение выборки (среднее значение a.k.a). Если ожидаемое значение X
является μ и дисперсия является X
σ , ожидаемое значение выборочного среднего также μ и имеет дисперсию σ/Н.
Так как Uniform (0, 1) имеет значение 0,5 и дисперсию 1/12, ваш алгоритм будет генерировать результаты, которые довольно близки к обычно распределенным со средним значением 0,5 и дисперсией 1/12000. Следовательно, 99,7% результатов должны подпадать под +/- 3 стандартных отклонения среднего значения, т. Е. В диапазоне 0,5 +/- 0,0274.
Это смехотворно неэффективный способ получения нормалей. Лучшие альтернативы включают метод Box-Muller, метод Polar или метод ziggurat.
Это не глупо, если вы ищете распределение по Гауссу/нормальному. –
@ RussellBorogove На самом деле это невероятно глупо.Это эквивалент вероятности/статистики умножения двух больших чисел A и B, добавляя A к себе B раз. Есть гораздо лучшие способы получить гауссианцев, чем суммировать тысячу униформ. – pjs
Ваш профессор кажется хорошим кандидатом для кого-то, кто мог бы объяснить код (ы), который он написал :) – dimo414