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

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

Box Muller.svg

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

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

Пусть   и   — независимые случайные величины, равномерно распределённые на интервале  . Вычислим   и   по формулам

 
 

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

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

Пусть   и   — независимые случайные величины, равномерно распределённые на отрезке  . Вычислим  . Если окажется, что   или  , то значения   и   следует «выбросить» и сгенерировать заново. Как только выполнится условие  , по формулам

 

и

 

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

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

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

После получения стандартной нормальной случайной величины  , можно легко перейти к величине   распределённой нормально с математическим ожиданием   и стандартным отклонением   по формуле

 

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

См. такжеПравить

СсылкиПравить