Чи можемо ми генерувати випадкові числа, використовуючи ірраціональні числа, такі як π та e?


21

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


30
У вас в голові дивне визначення поняття "випадковий". "Випадковий" означає "непередбачуваний". Як ваша послідовність непередбачувана? Яке визначення "випадкового" ви маєте на увазі? Можливо, те, що ви називаєте "випадковим", має іншу назву.
Ерік Ліпперт

7
Зауважте, алгоритм спигота може використовуватися для генерування будь-якої шістнадцяткової цифри в pi, без необхідності генерування попередніх цифр.
rcgldr

10
@EricLippert Чи не всі генератори псевдовипадкових чисел передбачувані?
Федеріко Полоні

7
Термін придумали кілька разів: це "випадкове число psuedo", а не "випадкове число". Це число, що генерується алгоритмічно (так не випадково), але яке має багато бажаних властивостей, якими володіють випадкові числа. Інший алгоритм - це алгоритм "Телефонної книги NYC", де ви вниз внизу списку номерів телефонів за алфавітом і дістаєте останню цифру від кожного з них. Не випадковий, а псевдовипадковий з деякими досить приємними статистичними поведінками!
Корт Аммон - Відновіть Моніку

5
"Псевдо" означає "подібний, але ні". Тож псевдовипадкові числа схожі на, але не випадкові числа. Тож я не слідкую за вашим думкою думок. Тепер, криптовалютні PRNG мають бажану властивість: якщо внутрішній стан нападника невідомий, жоден статистичний тест, який ми маємо, не може відрізнити крипто PRNG від справжнього RNG, і це включає їх відсутність передбачуваності. Але цифри пі не мають такої властивості; вони дуже передбачувані.
Ерік Ліпперт

Відповіді:


17

Найбільш очевидним недоліком є ​​непотрібна складність алгоритмів PRNG на основі ірраціональних чисел. Вони вимагають набагато більше обчислень на генеровану цифру, ніж, скажімо, LCG; і ця складність, як правило, зростає по мірі подальшого послідовності. Обчислення 256 біт π у двоквадрілліонному біті зайняло 23 дні на 1000 комп'ютерах (ще в 2010 році) - досить непомірна складність для RNG.


47

Для будь-якого розумного визначення ідеального, описаний вами механізм не є ідеальним генератором випадкових чисел.

  • Повторення недостатньо. Десяткове число 0.101001000100001 не повторюється, але це жахливий генератор випадкових цифр, оскільки відповідь "завжди" нуль, зрідка один, а ніколи більше нічого.

  • Насправді ми не знаємо, чи кожна цифра зустрічається однаково часто в десятковому розширенні π або  е (хоча ми підозрюємо, що вони є).

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

  • Зазвичай ми хочемо генерувати випадкові числа досить швидко, але генерування послідовних цифр математичних констант, як правило, досить дороге.

  • Однак правдою є те, що цифри π і  е виглядають статистично випадковими, в тому сенсі, що кожна можлива послідовність цифр, здається, виникає приблизно так часто, як і слід. Так, наприклад, кожна цифра відбувається дуже близько одного разу з десяти; кожна двоцифрова послідовність дуже близька до однієї в сотні тощо.


11
По-третє, повинен бути якийсь "секретний" вхід у процес вашого генерації, щоб він був непередбачуваним (сам процес генерації повинен бути детермінованим, якщо ми не хочемо покладатися на ще один генератор випадкових чисел.). Цей додатковий вклад часто називають насінням .
Дискретна ящірка

6
@Discretelizard Це правда, але існує не так багато можливостей для висіву за межі "повернути послідовні цифри, починаючи з позиції ". На той час , коли ви бачили 2 LOG сек цифри, що послідовність відбувається тільки кілька разів в протягом перших s 2 цифр П , так що це унікальний в межах перших s цифри із високою ймовірністю , і ви знаєте , насіння. с2журналсс2πс
Девід Річербі

2
@Barmar: У цей момент ви повинні запитати, чи справді ця методика є більш ефективною (і більш ефективною), ніж "стандартна" PRNG.
Кевін

2
Цифри пі або е є абсолютно непередбачувані, тим більше , що глядач / одержувач / код автоматичного вимикача і т.д. не має ні найменшого уявлення про те , як далеко вперед у послідовності ви вже є. Якщо ви починаєте з цифри 237423 послідовності, це знадобиться стільки часу, як випадково.
інженер, що повернувся,

10
@DaveBoltman Якщо ми не робимо щось на зразок криптографії, ніхто не піклується про те, щоб задуматися про це. Якщо ми робимо криптографію, це стандартне припущення, що ваш противник знає, який алгоритм ви використовуєте, який, у цьому випадку, включає, яке ірраціональне число походить із послідовності та як ви вибираєте цифри, за винятком будь-якого параметра, наприклад, "почати з цифри ". Якщо противник не знає, яке число ви використовуєте тоді, звичайно, наступна цифра може бути буквально будь-якою, але тоді вони здогадуються, що це s та гра закінчена. my birthday
Девід Річербі

29

Це криптографічно марно, оскільки противник може передбачити кожну цифру. Це також дуже трудомістко.


11
ОП ніколи не згадує криптографію ...
AnoE

13
@AnoE Так? Те, що цей процес буде криптографічно марним, все ще актуально, тому що крипто - завзятий користувач випадковості. Якщо ви піднімете пристрої, /dev/randomі /dev/urandomхтось незмінно виведе криптографію.
Грег Шміт - Відновити Моніку

6
Ви були б вражені тим, наскільки марна криптографічна безпека створюється в режимі реального часу PRNG. Ірраціональні номери часто використовуються в PRNG GPU. Існує маса додатків, де "безпечно" PRNG просто не має значення. Що важливо в чомусь схожим на генерацію шуму - це якість розповсюдження та те, як часто ваш період повторюється, та кореляційні наслідки через сусідні насіння (що потребує фіксації лавинних змішувачів). Досить чесно, ваша відповідь неправильна, тут не належить і, ймовірно, її слід видалити.
пн

6
Це не відповідь на питання. Зверніть увагу, що ОП зв'язаного питання використовує випадкові числа для висіву на аналіз Монте-Карло. Слід розглянути оновлення для вирішення поставленого питання. mathoverflow.net/questions/26942/…
CramerTV

8
Звичайно, існує багато програм, де PRNG не потрібно захищати криптографічно. Але ОП не запитували, чи корисний він для якихось цілей, вони запитували, чи цей метод "ідеальний RNG". Хоча вони не уточнили, що вони розуміють під поняттям "ідеально", той факт, що він не підходить для одного з основних напрямків використання СРН, видається дуже актуальним для відповіді на це питання.
Джеффрі Брент

7

( оновлено після того, як багато людей зазначили, що генератор випадкових чисел - це не те саме, що й одна нормальна послідовність)

Якщо ви запитаєте, чи можна отримати нормальну послідовність з π (тобто всі числа відображаються рівномірно), то на mathoverflow є кілька відповідей. Наприклад, відповідь про розподіл цифр Pi говорить:

... вважається, що π - це нормальне число (~ рівномірний розподіл кожної послідовності цифр).

Дані про розподіл цифр див., Наприклад, http://www.eveandersson.com/pi/precalculated-frequency або https://thestarman.pcministry.com/math/pi/RandPI.html (перші 1000 цифр):

введіть тут опис зображення

На mathoverflow також є приємні відповіді:


3
Якщо ви вважаєте, що питання є дублікатом, то чому ви на нього відповідаєте? Ви повинні просто позначити це, а не підсилювати небажану поведінку в опублікуванні.
dkaeae

8
@dkaeae На інших сайтах немає підтримки дублікатів питань. Крім того, на одне і те ж питання на різних сайтах можна отримати різні відповіді. У цьому випадку такий сайт, як Математика, може не приділяти великої уваги питанням безпеки. Дивіться також цю відповідь . Зауважте, що ми не рекомендуємо задавати одне і те ж питання на кількох сайтах одночасно, оскільки це, як правило, призводить до марних зусиль. Але одне і те ж питання різних людей у ​​різний час на різних сайтах зазвичай нормально.
Дискретна ящірка

6
На жаль, те, що число є нормальним, не означає, що виведення його цифр дає хороший RNG. Виходи такої RNG все ще цілком передбачувані. Чи прийнятно це, може залежати від програми. Отже, я не думаю, що це так просто, як сказати "пі нормально, справа закрита".
DW

2
Це лише емпіричне спостереження за першими кількома цифрами? Що мається на увазі під цим?
маршальське ремесло

1
@DW Я згадав, що я маю намір використовувати комбінацію чисел, таких як π і e. І скажіть, будь ласка, як вихід буде передбачуваним, якщо ми не знаємо, наскільки далеко вниз послідовність пройшов генератор?
Абфрадіп Саркар

1

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

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

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


4
πe

3
Відповідь Айрата посилається на інші сайти, де математики зробили ці тести. Вони вважають, але не довели, що π відповідає статистичним тестам.
Бармар

Так, саме це я мав на увазі в своєму останньому абзаці - просто емпірично спробувати це варто; але жорстко це не було доведено (або не можна просто вважати істинним) для довільних "складних на вигляд" ірраціоналів. @DavidRicherby, @ Barmar
AnoE

1

Це забезпечує хороше випадкове число, поки ви не зрозумієте, як воно було вироблено, як і для багатьох псевдо випадкових чисел. Обрані вами ірраціональні (не алгебраїчні та не трансцендентальні) є загальними і простіше здогадатися, ніж інші. Я не бачу жодної проблеми з цим методом за умови вибору менш часто зустрічаються генераторів.


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

4
алгебраїчна, аπі2πe

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