Зворотний метод Бокса-Мюллера : від кожної пари нормалей , два незалежних уніформа може бути виконаний в вигляді atan2 ( Y , X ) (на інтервалі [ - П , π ] ) і ехр ( - ( Х 2 + Y 2 ) / 2 ) (на проміжку [ 0 , 1 ] ).(X,Y)atan2(Y,X)[−π,π]exp(−(X2+Y2)/2)[0,1]
Візьміть нормалі в групах з двох і підсумувати їх квадрати , щоб отримати послідовність змінну . Вирази, отримані з пар Y 1 , Y 2 , … , Y i , …χ22Y1, Y2, … , Yi, …
Хi= Y2 iY2 i - 1+ Y2 i
матиме розподіл , який є рівномірним.Бета ( 1 , 1 )
Що для цього потрібна лише основна, проста арифметика, має бути зрозуміло.
Оскільки точний розподіл коефіцієнта кореляції Пірсона чотири парної вибірки від стандартного біваріантного нормального розподілу рівномірно розподілений на , ми можемо просто взяти нормали у групи з чотирьох пар (тобто вісім значень у кожен набір) і повернути коефіцієнт кореляції цих пар. (Це включає просту арифметику плюс дві квадратні кореневі операції.)[ - 1 , 1 ]
З давніх часів було відомо, що циліндрична проекція сфери (поверхні в трипросторі) дорівнює площі . Це означає, що в проекції рівномірного розподілу на сферу і горизонтальна координата (відповідна довготі), і вертикальна координата (відповідна широті) матимуть рівномірні розподіли. Оскільки стандартний трикваріатний нормальний розподіл сферично симетричний, його проекція на сферу рівномірна. Отримання довготи - це по суті такий же розрахунок, як і кут у методі Бокса-Мюллера ( qv ), але прогнозована широта нова. Проекція на сферу просто нормалізує трійку координат і в цій точці z - проектована широта. Таким чином, візьміть величини Normal у групи по три, X 3 i - 2 , X 3 i - 1 , X 3 i та обчисліть(x,y,z)zX3i−2,X3i−1,X3i
X3iX23i−2+X23i−1+X23i−−−−−−−−−−−−−−−−√
для .i=1,2,3,…
Оскільки більшість обчислювальних систем представляють числа у двійковій формі, генерація рівномірних чисел зазвичай починається з отримання рівномірно розподілених цілих чисел між і 2 32 - 1 (або деякою великою потужністю 2, що стосується комп’ютерної довжини слова) та зміною їх розміру за необхідності. Такі цілі числа представлені внутрішньо як рядки з 32 двійкових цифр. Ми можемо отримати незалежні випадкові біти, порівнявши змінну Normal з її медіаною. Таким чином, достатньо розбити звичайні змінні на групи розміром, рівним бажаній кількості біт, порівняти кожну з її середнім значенням і зібрати отримані послідовності істинних / хибних результатів у двійкове число. Написання к0232−1232kдля числа біт і для знака (тобто H ( x ) = 1, коли x > 0 і H ( x ) = 0 в іншому випадку) можна виразити отримане нормоване однорідне значення в [ 0 , 1 ) формулоюHH(x)=1x>0H(x)=0[0,1)
∑j=0k−1H(Xki−j)2−j−1.
Змінні можна отримати з будь-якого безперервного розподілу, медіана якого дорівнює 0 (наприклад, стандартний нормальний); вони обробляються групами k з кожною групою, виробляючи одне таке псевдорівномірне значення.Xn0k
Вибірка відхилення - це стандартний, гнучкий, потужний спосіб отримання випадкових змінних з довільних розподілів. Припустимо, цільовий розподіл має PDF . Значення Y малюється відповідно до іншого розподілу з PDF g . На етапі відхилення рівномірне значення U, що лежить між 0 і g ( Y ) , виводиться незалежно від Y і порівнюється з f ( Y ) : якщо воно менше, YfYgU0g(Y)Yf(Y)Yзберігається, але в іншому випадку процес повторюється. Цей підхід здається круговим: як ми можемо генерувати єдину змінну з процесом, для якого потрібна рівномірна змінна?
Відповідь полягає в тому, що насправді нам не потрібна однакова змінна для виконання кроку відхилення. Натомість (припустимо, що ) ми можемо перевернути справедливу монету, щоб отримати випадково 0 або 1 . Це буде інтерпретовано як перший біт у двійковому поданні рівномірної змінної U в інтервалі [ 0 , 1 ) . Коли результат 0 , це означає , що 0 ≤ U < 1 / 2 ; в іншому випадку, 1 / 2 ≤ U < 1 . g(Y)≠001U[0,1)00≤U<1/21/2≤U<1Половина часу, цього достатньо , щоб вирішити , крок: відмова , якщо , але монета 0 , Y повинен бути прийнятий; якщо F ( Y ) / г ( У ) < 1 / 2 , але монета 1 , Y повинна бути відхилена; в іншому випадку, нам потрібно перевернути монету знову, щоб отримати наступний біт U . Тому що - незалежно від того, яке значення f ( Yf(Y)/g(Y)≥1/20Yf(Y)/g(Y)<1/21YU є - є 1 / 2 ймовірність зупинки після кожного фліп, очікуване число перебудов тільки 1 / 2 ( 1 ) + 1 / 4 ( 2 ) + 1 / 8 ( 3 ) + ⋯ + 2 - n ( n ) + ⋯ = 2 .f(Y)/g(Y)1/21/2(1)+1/4(2)+1/8(3)+⋯+2−n(n)+⋯=2
Відбір проб відхилення може бути корисним (і ефективним), якщо очікувана кількість відхилень невелика. Ми можемо досягти цього, встановивши найбільший можливий прямокутник (представляючи рівномірний розподіл) під звичайний PDF.
Використання Обчислення для оптимізації площі прямокутника, ви побачите , що її кінці повинні лежати на , де його висота дорівнює ехр ( - 1 / +2 ) / √±1, що робить його площу трохи більше0,48. Використовуючи цю стандартну нормальну щільність якgта автоматично відкидаючи всі значення за межами інтервалу[-1,1], інакше застосовуючи процедуру відхилення, ми отримаємо ефективні змінні в[-1,1]ефективно:exp(−1/2)/2π−−√≈0.2419710.48g[−1,1][−1,1]
У частці часу змінна Normal лежить за межами [ - 1 , 1 ] і негайно відкидається. ( Φ стандартний нормальний CDF.)2Φ(−1)≈0.317[−1,1]Φ
У решту часу слід дотримуватися процедури бінарного відхилення, що вимагає в середньому ще двох нормальних змінних.
Загальна процедура вимагає в середньому кроків.1/(2exp(−1/2)/2π−−√)≈2.07
Очікувана кількість нормальних змінних, необхідних для створення кожного рівномірного результату, відповідає
2eπ−−−√(1−2Φ(−1))≈2.82137.
Хоча це досить ефективно, зауважте, що (1) обчислення Нормального PDF вимагає обчислення експоненції, і (2) значення повинно бути попередньо обчислене раз і назавжди. Це все-таки трохи менший розрахунок, ніж метод Box-Mueller ( qv ).Φ(−1)
В порядкові статистики рівномірного розподілу мають експоненціальні прогалини. Оскільки сума квадратів двох нормалей (нульової середньої величини) є експоненціальною, ми можемо генерувати реалізацію незалежних уніформ шляхом підсумовування квадратів пар таких нормалей, обчислюючи їх сукупну суму, розміщуючи результати на падіння інтервалу. [ 0 , 1 ] і скидання останнього (яке завжди буде рівним 1 ). Це приємний підхід, оскільки він вимагає лише квадратування, підбиття підсумків та (наприкінці) єдиного поділу.n[0,1]1
Значення автоматично будуть у порядку зростання. Якщо таке сортування бажано, цей метод обчислювально перевершує всі інші, наскільки це дозволяє уникнути вартості сорту O ( n log ( n ) ) . Якщо потрібна послідовність незалежних уніформ, то сортування цих n значень випадково зробить свою справу. Оскільки (як видно з методу Box-Mueller, qv ) відношення кожної пари нормалей не залежать від суми квадратів кожної пари, ми вже маємо засоби для отримання цієї випадкової перестановки: впорядкуйте кумулятивні суми за відповідними співвідношеннями . (Якщо nnO(nlog(n))nnдуже великий, цей процес може бути здійснений в менших групах з невеликою втратою ефективності, оскільки кожна група потребує тільки 2 ( K + 1 ) нормалей для створення K однорідних значень. Для фіксованого k асимптотична обчислювальна вартість, таким чином, становить O ( n log ( k ) ) = O ( n ) , для отримання n рівномірних значень потрібно 2 n ( 1 + 1 / k ) .k2(k+1)kkO(nlog(k))O(n)2n(1+1/k)n
До чудового наближення будь-яка нормальна величина з великим стандартним відхиленням виглядає рівномірно в діапазонах значно менших значень. Перекочуючи цей розподіл у діапазон (беручи лише дробові частини значень), ми отримуємо тим самим розподіл, який є рівномірним для всіх практичних цілей. Це надзвичайно ефективно, вимагає однієї з найпростіших арифметичних операцій з усіх: просто обведіть кожну змінну Normal вниз до найближчого цілого числа і збережіть надлишок. Простота такого підходу стає переконливою, коли ми вивчаємо практичну реалізацію:[0,1]R
rnorm(n, sd=10) %% 1
надійно виробляє n
однакові значення в діапазоні за ціною лише нормальних змінних і майже не обчислює.[0,1]n
(Навіть коли стандартне відхилення дорівнює , PDF цього наближення відрізняється від рівномірного PDF, як показано на наступному малюнку, менш ніж на одну частину з 10 8 ! Щоб надійно його виявити, знадобиться вибірка з 10 16 значень-- це вже виходить за межі можливостей будь-якого стандартного тесту на випадковість. При більшому стандартному відхиленні нерівномірність настільки мала, що її навіть неможливо обчислити. Наприклад, при SD 10, як показано в коді, максимальне відхилення від рівномірного PDF - лише 10 - 857. )110810161010−857
У кожному випадку звичайні змінні "з відомими параметрами" можуть бути легко переглянуті і перероблені у стандартні нормали, прийняті вище. Після цього отримані рівномірно розподілені значення можна переглядати та міняти масштабом, щоб покрити будь-який бажаний інтервал. Для них потрібні лише основні арифметичні операції.