Перетворення Бокса-Мюллера

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Box Muller.svg

Перетвóрення Боксу — Мюллераметод моделювання стандартних нормально розподілених випадкових величин. Має два варіанти. Метод є точним, на відміну, наприклад, від методів що ґрунтуються на центральній граничній теоремі.

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

Перший варіант[ред.ред. код]

Хай r і \phi  — незалежні випадкові величини, рівномірно розподілені на інтервалі (0, 1]. Обчислимо z_0 і z_1 за формулами:

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

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

Другий варіант[ред.ред. код]

Нехай x і y  — незалежні випадкові величини, рівномірно розподілені на відрізку [−1, 1]. Обчислимо R = x^2 + y^2. Якщо виявиться, що R > 1 чи R = 0, то значення x і y слід «викинути» і згенерувати наново. Як тільки виконається умова0 < R \le 1 за формулами

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

і

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

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

Коефіцієнт використовування базових випадкових величин для першого варіанту, очевидно, рівний одиниці. Для другого варіанту це відношення площі кола одиничного радіусу до площі квадрата із стороною два, тобто \pi / 4 \approx 0,785. Проте, на практиці другий варіант звичайно виявляється швидше, за рахунок того, що в ньому використовується тільки одна трансцендентна функція \ln (\cdot). Ця перевага для більшості реалізацій переважує необхідність генерації більшого числа рівномірно розподілених випадкових величин.

Перехід до загального нормального розподілу[ред.ред. код]

Після отримання стандартної нормальної випадкової величини z, можна легко перейти до величини \xi \sim N (\mu, \sigma^2), що є нормально розподіленою з математичним очікуванням \mu і стандартним відхиленням \sigma за формулою:

\xi = \mu + \sigma z.

Це вже не є частиною перетворення Боксу — Мюллера, але дозволяє завершити генерацію нормальної випадкової величини.