Преобразование Бокса — Мюллера

Материал из testwiki
Перейти к навигации Перейти к поиску

Преобразование Бокса — Мюллера — метод моделирования стандартных нормально распределённых случайных величин. Имеет два варианта. Метод является точным, в отличие, например, от методов, основывающихся на центральной предельной теореме.

Метод был опубликован в 1958 году Джорджем Боксом и Мервином Мюллером.

Первый вариант

Пусть r и φ  — независимые случайные величины, равномерно распределённые на интервале (0,1]. Вычислим z0 и z1 по формулам

z0=cos(2πφ)2lnr,
z1=sin(2πφ)2lnr.

Тогда z0 и z1 будут независимы и распределены нормально с математическим ожиданием 0 и дисперсией 1. При реализации на компьютере обычно быстрее не вычислять обе тригонометрические функции — cos() и sin() — а рассчитать одну из них через другую. Ещё лучше воспользоваться вместо этого вторым вариантом преобразования Бокса — Мюллера.

Второй вариант

Пусть x и y — независимые случайные величины, равномерно распределённые на отрезке [1,1]. Вычислим s=x2+y2. Если окажется, что s>1 или s=0, то значения x и y следует «выбросить» и сгенерировать заново. Как только выполнится условие 0<s1, по формулам

z0=x2lnss

и

z1=y2lnss

следует рассчитать z0 и z1, которые, как и в первом случае, будут независимыми величинами, удовлетворяющими стандартному нормальному распределению.

Коэффициент использования базовых случайных величин для первого варианта, очевидно, равен единице. Для второго варианта это отношение площади окружности единичного радиуса к площади квадрата со стороной два, то есть π/40,785. Тем не менее, на практике второй вариант обычно оказывается быстрее, за счёт того, что в нём используется только одна трансцендентная функция, ln(). Это преимущество для большинства реализаций перевешивает необходимость генерации большего числа равномерно распределённых случайных величин.

Переход к общему нормальному распределению

После получения стандартной нормальной случайной величины z, можно легко перейти к величине ξN(μ,σ2) распределённой нормально с математическим ожиданием μ и стандартным отклонением σ по формуле

ξ=μ+σz.

Это уже не является частью преобразования Бокса — Мюллера, но позволяет завершить генерацию нормальной случайной величины.

См. также

Ссылки

Шаблон:Нет источников