Чи є вибіркою відхилення єдиний спосіб отримати справді рівномірний розподіл випадкових чисел?


21

Припустимо, у нас є випадковий генератор, який виводить числа в діапазоні [0..R1] при рівномірному розподілі, і нам потрібно генерувати випадкові числа в діапазоні [0..N1] при рівномірному розподілі.

Припустимо, що N<R і N не поділяють рівномірно R ; для отримання по- справжньому рівномірного розподілу ми можемо використовувати метод вибірки відхилення :

  • якщо k - найбільше ціле число, таке, що kN<R
  • виберіть випадкове число r у [0..R1]
  • якщо r<kN тоді виведіть , інакше продовжуйте намагатися з іншими випадковими числами r ', r ", ..., поки умова не буде виконанаrmodN
Чи є вибірка відхилення єдиним способом отримати справді рівномірний дискретний розподіл?

Якщо відповідь "так", то чому?

Примітка: якщо ідея однакова: випадкове число в , наприклад , де випадкове число в діапазоніN>Rr[0..Rm1],Rm>=Nr=R(...R(Rr1+r2)...)+rmri[0..R1]


Відповіді:


13

Так і ні, залежно від того, що ви маєте на увазі під "єдиним способом". Так, оскільки не існує методу, який гарантовано припинить, найкраще, що ви можете зробити (для загальних значень і ) - це алгоритм, який закінчується з вірогідністю 1. Ні. Це означає, що ви можете зробити "відходи" як малі як тобі до вподоби.RNR

Чому гарантоване припинення взагалі неможливо

Припустимо, у вас є детермінований двигун обчислень (машина Тюрінга або що-небудь плаває на вашому човні), плюс оракул, який генерує випадкові елементи набору елементів . Ваша мета полягає в тому, щоб сформувати елемент - елементного безлічі . Вихід вашого двигуна залежить лише від послідовності значень, повернутих оракулом; це функція цієї потенційно нескінченної послідовності .[ 0 .. R - 1 ] N [ 0 , N - 1 ] f ( r 0 , r 1 , r 2 , )R[0..R1]N[0,N1]f(r0,r1,r2,)

Припустимо, ваш двигун дзвонить у оракул щонайбільше разів. Можуть бути сліди, за якими оракул називається менше разів; якщо так, виклик Oracle додаткові рази, щоб він завжди називався саме разів, не змінює вихід. Отже, не втрачаючи загальності, ми припускаємо, що оракул називається рівно разів. Тоді ймовірність результату - це кількість послідовностей така, що . Оскільки оракул є рівномірним випадковим генератором, кожна послідовність є однозначною і має ймовірність . Отже, ймовірність кожного результату має формуm m m x ( r 0 , , r m - 1 ) f ( r 0 , , r m - 1 ) = x 1 / R m A / R m A 0 R mmmmmx(r0,,rm1)f(r0,,rm1)=x1/RmA/Rmде - ціле число між і .A0Rm

Якщо ділить на деякий , то ви можете створити рівномірний розподіл по елементах, викликаючи випадковий генератор разів (це залишено читачем як вправу). В іншому випадку, це неможливо: немає ніякого способу , щоб отримати результат з імовірністю . Зауважте, що умова еквівалентна тому, що всі основні фактори також є факторами (це більш дозволено, ніж те, що ви написали у своєму запитанні; наприклад, ви можете вибрати випадковий елемент серед 4 із 6-сторонній ярмарком вмирають, хоча 4 не ділить 6).R m m N m 1 / N N RNRmmNm1/NNR

Зменшення відходів

У своїй стратегії, коли , вам не доведеться відразу малювати. Інтуїтивно, в залишилось трохи ентропії, яку ви можете зберегти в суміші.[ кrkN[kN..R1]

Припустимо на хвилину , що ви насправді тримати генерації випадкових чисел нижче назавжди, і ви генерувати з них в той час, роблячи розіграшів. Якщо ви робите прямий відбір проб відхилення для цього згрупованого покоління, відходи над притягує , тобто залишок ділиться на кількість нічиїх. Це може бути не менше . Коли і є спільними, ви можете зробити відходи довільно невеликими, вибравши досить великі значення . Для загальних значень іу д д Р д - кNuddRdkNudRdmodNugcd(R,N)RNdRN, розрахунок складніший, оскільки потрібно враховувати генерацію та , але знову ж таки ви можете зробити відходи довільно невеликими з досить великими групами.gcd(R,N)N/gcd(R,N)

На практиці, навіть при відносно неефективних випадкових числах (наприклад, у криптографії), рідко варто робити що-небудь, крім простого відбору відхилення, якщо тільки невеликий. Наприклад, у криптографії, де зазвичай є потужністю 2, а зазвичай становить сотні чи тисячі біт, рівномірне генерування випадкових чисел зазвичай відбувається шляхом прямої вибірки відхилення в потрібному діапазоні.NRN


Перший доказ хибний: існування занадто сильне. У нас може бути машина, яка споживає довільно багато елементів, але завжди припиняється. В основному ми хочемо виключити одну послідовність (ніколи не закінчується), але ви виключаєте всі, але безліч кінцевих. m
Рафаель

@Raphael Я не впевнений, що я розумію, що ти маєш на увазі. Чи можете ви навести приклад такої машини?
Жил "ТАК - перестань бути злим"

Ах, моя стурбованість була надто загальною. Тут - зважаючи на відсутність вхідних даних - ви праві. Якщо всі обчислення закінчуються, їх кінцево багато (немає вводу, кінцева кількість рішень за крок, ерго, кінцеве дерево), тому існує найдовше, яке дає вам . m
Рафаель

@Raphael Ваш коментар змушує мене думати про кращу презентацію для аудиторії TCS: зробіть RNG введенням TM замість оракула. Ми припускаємо, що ТМ припиняється (інакше алгоритм невірний). Якщо є такий, що незалежно від входу, ТМ розглядає щонайбільше вхідних комірок, то <бла, розділене на bla, не може мати однозначних результатів>. В іншому випадку для всіх ймовірність вимагати принаймні малює принаймні . mmRmNmmRm
Жил "ТАК - перестань бути злим"

1
@ Рафаель: Лема Кеніга показує, що якщо машина завжди припиняється, то насправді існує верхня межа часу її роботи. Це працює до тих пір, поки вихідний набір RNG є кінцевим (інакше він є тривіально помилковим).
Yuval Filmus

6

Теорема кодування джерела Шеннона показує, що в певному сенсі вам потрібно зразків (в середньому) типу щоб генерувати випадкове число типу . Точніше, Шеннон дає (неефективний) алгоритм, який дає вибірки першого типу, виводить зразки другого типу з високою ймовірністю. Він також показує, що вивести зразки з високою ймовірністю неможливо.logN/logR[0,,R1][0,,N1]mm(logN/logRϵ)m(logN/logR+ϵ)

Теорема Шеннона також працює в більш загальному випадку косого розподілу вхідних даних (і, ймовірно, також косого розподілу виходу). У такому випадку потрібно замінити логарифм на ентропію. У той час як алгоритм, заданий теоремою, визначений випадковим чином, в деяких випадках можливо дерандомізувати його (ціною дещо гіршої продуктивності).


5

Насправді ні, вибірка відхилень далеко не єдиний спосіб протікати. На жаль, враховуючи, що комп'ютери зберігають усю інформацію у вигляді бітів, і, таким чином, можуть лише маніпулювати випадковими бітами інформації, будь-який алгоритм складання рівномірної випадкової величини діапазону буде нескінченним, якщо розвиток бінарної бази є нескінченним.NN

Ця теорема є класичним результатом Кнут та Яо (1976), які розробили рамки дерев DDG (дискретний розподіл генеруючих дерев).

Методи, піддані Жиллю, - це типова річ, яка робилася для зменшення відходів, спричинених відхиленням, але, звичайно, якщо можна генерувати сліди за деревами Кнут та Яо, це набагато, набагато ефективніше - в середньому 96% випадкових біт зберігаються.

Більше інформації про це я надав у наступному пості CStheory .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.