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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Box Muller.svg

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

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

Первый вариант[править | править исходный текст]

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

z_0 = \cos (2 \pi \varphi) \sqrt {-2 \ln r},
z_1 = \sin (2 \pi \varphi) \sqrt {-2 \ln r}.

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

Второй вариант[править | править исходный текст]

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

z_0 = x \cdot \sqrt {-2 \ln s \over s}

и

z_1 = y \cdot \sqrt {-2 \ln s \over s}

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

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

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

После получения стандартной нормальной случайной величины z, можно легко перейти к величине \xi \sim N (\mu, \sigma^2) распределённой нормально с математическим ожиданием \mu и стандартным отклонением \sigma по формуле

\xi = \mu + \sigma z.

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