Чи всі генератори псевдовипадкових чисел в кінцевому рахунку періодичні?


24

Чи всі генератори псевдовипадкових чисел в кінцевому рахунку періодичні? Або вони взагалі періодичні?

Під періодичним я маю на увазі, що, як і раціональні числа, вони зрештою генерують періодичну послідовність ...

І псевдовипадкова означає алгоритмічне / математичне генерування випадкових чисел ...


7
Це є педантичним моментом, але на комп’ютері з обмеженою пам'яттю кожна програма, що не зупиняється, в кінцевому рахунку періодична. Ви можете проаналізувати алгоритм роботи на машині Тьюрінга, але будь-який PRNG, використання пам'яті якого не обмежене часом, не буде дуже практичним.
Петро

@Петер ви говорите: "будь-який PRNG, використання пам'яті якого не обмежене часом, не буде дуже практичним". Це може бути не практично, коли використання пам'яті є квадратичним чи лінійним щодо часу, але що робити, якщо це лише логарифмічне? Дивіться мою відповідь.
Дон Хетч

Відповіді:


39

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

Однак тривалість періоду може бути величезною. Наприклад, PRNG з криптографічним станом 128 біт може циклікувати лише раз на 2128 біт виводу, і тому навіть якщо виводити по одному біту кожну наносекунду, Сонячна система буде мертвою, коли PRNG повторюється.

Якщо PRNG дозволено використовувати необмежену кількість пам'яті (що не реально), вона може, наприклад, виводити бінарне розширення , який ми знаємо, з часом не є періодичним (оскільки2 нераціонально).2


Коментарі не для розширеного обговорення; ця розмова переміщена до чату .
DW

Посилання на чат порушено. Чи все-таки можна побачити журнал обговорення? : / @DW
oink

@ cchan3141, я відновив його; Спробуємо зараз. Однак майте на увазі, що коментарі є дизайнерськими, і те саме стосується чатів. Якщо ви знайдете там щось, що має тривале значення для інших, я рекомендую вам запропонувати змінити відповідь, щоб включити цю інформацію або опублікувати нову власну відповідь. Дякую!
DW

7

PRNG - це державні машини. Якщо вони базуються лише на внутрішньому введенні (на відміну від RNG Poker Stars, який є комбінацією апаратного та програмного забезпечення, що постійно висіває з ... звукових зразків), ви отримаєте (C, S1, ...) де C - поточне (або попереднє) значення і S1, ... може бути набором станів:

Якщо є можливі N значень (оскільки обмежена пам'ять) C, і ви повторите N + 1 раз, ви отримаєте одне і те саме значення для C принаймні двічі. Якщо ви повторите 2N + 1 раз, ви отримаєте одне значення для C принаймні 3 рази.

Нехай T = (Ct, S1t, S2t) - певний стан (поточне значення та інші стани).
Нехай значення M = # {для S1} X {значення для S2} X {...} є кардиналом можливих комбінацій станів (знову: оскільки пам'ять обмежена).

Якщо ви повторите NM + 1-кратний алгоритм, ви досягнете щонайменше вдвічі однакового стану (Ct, S1t, S2t, ...), таким чином, генеруючи те саме значення виводу і таку саму послідовність стану, що і в перший раз, і тому стає періодичним.


6

Простий приклад псевдовипадкової послідовності, яка не є періодичною: об'єднайте двійкові представлення всіх натуральних чисел у порядку:

110111001011101111000...

(Додайте ".", І це називається двійковою постійною Шамперновна .)

Звичайно, це не дуже висока якість, що стосується псевдовипадкових послідовностей, але це демонструє, що це можливо без багато пам'яті.

π2

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

2128

2128

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