Преобразование Бокса — Мюллера
Материал из Википедии — свободной энциклопедии
Преобразование Бокса — Мюллера — метод моделирования стандартных нормально распределённых случайных величин. Имеет два варианта. Метод является точным, в отличие, например, от методов основывающихся на центральной предельной теореме.
Метод был опубликован в 1958 году Джорджем Боксом и Мервином Мюллером.
[править] Первый вариант
Пусть r и φ — независимые случайные величины, равномерно распределённые на интервале (0, 1]. Вычислим z0 и z1 по формулам
Тогда z0 и z1 будут независимы и распределены нормально с математическим ожиданием 0 и дисперсией 1. При реализации на компьютере обычно быстрее не вычислять обе тригонометрические функции — и — а рассчитать одну из них через другую. Ещё лучше воспользоваться вместо этого вторым вариантом преобразования Бокса — Мюллера.
[править] Второй вариант
Пусть x и y — независимые случайные величины, равномерно распределённые на отрезке [−1, 1]. Вычислим R = x2 + y2. Если окажется, что R > 1 или R = 0, то значения x и y следует «выбросить» и сгенерировать заново. Как только выполнится условие , по формулам
и
следует рассчитать z0 и z1, которые, как и в первом случае, будут независимыми величинами, удовлетворяющими стандартному нормальному распределению.
Коэффициент использования базовых случайных величин для первого варианта, очевидно, равен единице. Для второго варианта это отношение площади окружности единичного радиуса к площади квадрата со стороной два, т. е. . Тем не менее, на практике второй вариант обычно оказывается быстрее, за счёт того, что в нём используется только одна трансцендентная функция, . Это преимущество для большинства реализаций перевешивает необходимость генерации большего числа равномерно распределённых случайных величин.
[править] Переход к общему нормальному распределению
После получения стандартной нормальной случайной величины z, можно легко перейти к величине распределённой нормально с математическим ожиданием μ и стандартным отклонением σ по формуле
- ξ = μ + σz.
Это уже не является частью преобразования Бокса — Мюллера, но позволяет завершить генерацию нормальной случайной величины.