Можем ли мы генерировать случайные числа, используя иррациональные числа, такие как π и e?


21

Иррациональные числа, такие как , и имеют уникальную неповторяющуюся последовательность после десятичной точки. Если мы извлечем ую цифру из таких чисел (где - это количество раз, которое вызывается методом) и сделаем число с такими же цифрами, как есть, разве мы не должны получить идеальный генератор случайных чисел? Например, если мы используем , и , первое число - 123, второе - 471, следующее - 184 и так далее.πe2nn2eπ


30
У вас странное определение «случайный» в вашей голове. «Случайный» означает «непредсказуемый». Как ваша последовательность непредсказуема? Какое определение «случайный» вы имеете в виду? Возможно, то, что вы называете «случайным», имеет другое имя.
Эрик Липперт

7
Обратите внимание, что алгоритм spigot может использоваться для генерации любой шестнадцатеричной цифры в pi без необходимости генерировать предыдущие цифры.
rcgldr

10
@EricLippert Не все ли генераторы псевдослучайных чисел предсказуемы?
Федерико Полони

7
Термин встречался несколько раз: это «случайное число псевдо», а не «случайное число». Это число генерируется алгоритмически (поэтому не случайно), но имеет много желательных свойств, которыми обладают случайные числа. Другим алгоритмом является алгоритм «Телефонная книга Нью-Йорка», в котором вы выбираете список телефонных номеров в алфавитном порядке и берете последнюю цифру в каждом из них. Не случайно, но псевдослучайно с некоторыми довольно хорошими статистическими поведениями!
Cort Ammon - Восстановить Монику

5
«Псевдо» означает «похож на, но не». Так что псевдослучайные числа похожи, но не случайные числа. Так что я не слежу за твоим ходом мыслей здесь. Теперь PRNG с криптостойкостью обладают желаемым свойством: если внутреннее состояние неизвестно злоумышленнику, никакой статистический тест, которым мы располагаем, не сможет отличить крипто-PRNG от истинного RNG, и это включает в себя отсутствие предсказуемости. Но цифры числа пи не обладают этим свойством; они очень предсказуемы.
Эрик Липперт

Ответы:


17

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


47

Для любого разумного определения совершенного, описанный вами механизм не является совершенным генератором случайных чисел.

  • Неповторяющихся недостаточно. Десятичное число 0.101001000100001 неповторяется, но это ужасный генератор случайных цифр, так как ответ «всегда» ноль, иногда один, и больше ничего.

  • На самом деле мы не знаем, встречается ли каждая цифра одинаково часто в десятичном разложении π или  e (хотя мы подозреваем, что это происходит).

  • Во многих ситуациях мы требуем, чтобы случайные числа были непредсказуемыми (действительно, если бы вы спросили случайного человека, что означает «случайный», они, вероятно, сказали бы что-нибудь о непредсказуемости). Цифры известных констант полностью предсказуемы.

  • Обычно мы хотим генерировать случайные числа достаточно быстро, но генерация последовательных цифр математических констант имеет тенденцию быть довольно дорогой.

  • Однако верно, что цифры π и  e выглядят статистически случайными в том смысле, что каждая возможная последовательность цифр, кажется, встречается примерно так часто, как и должна. Так, например, каждая цифра встречается очень близко к одному разу из десяти; каждая двузначная последовательность очень близка к единице из ста, и так далее.


11
В-третьих, в процессе генерации должен быть какой-то «секретный» ввод, чтобы он был непредсказуемым (сам процесс генерации должен быть детерминированным, если мы не хотим полагаться на еще один генератор случайных чисел.). Этот дополнительный вклад часто называют семенем .
Дискретная ящерица

6
@Discretelizard Это правда, но не так много места для заполнения, кроме «возврата последовательных цифр, начинающихся с позиции ». К тому времени , когда вы видели 2 LOG сек цифры, что последовательность происходит только несколько раз в течение первых s 2 цифр П , так что это уникальный в пределах первых s цифры с высокой вероятностью , и вы знаете , семя. s2logss2πs
Дэвид Ричерби

2
@ Бармар: В этот момент вы должны спросить, действительно ли этот метод более производительный (и более экономичный), чем "стандартный" PRNG.
Кевин

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

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

29

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


11
ОП никогда не упоминает криптографию ...
AnoE

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

6
Вы были бы удивлены тем, насколько бесполезна криптографическая безопасность при генерации PRNG в реальном времени. иррациональные числа часто используются в PRNG GPU. Существует множество приложений, в которых «безопасность» вашего PRNG просто не имеет значения. При генерации когерентного шума имеет значение качество распределения и частота повторения вашего периода, а также эффекты корреляции из-за соседних семян (что потребовало бы лавинных смесителей для исправления). Честно говоря, ваш ответ неправильный, он не относится к этой категории и, вероятно, его следует удалить.
WHN

6
Это не ответ на вопрос. Обратите внимание, что OP связанного вопроса использует случайные числа для заполнения анализа Монте-Карло. Обновление для решения задаваемого вопроса следует рассмотреть. mathoverflow.net/questions/26942/…
CramerTV

8
Конечно, есть много приложений, где PRNG не должны быть криптографически безопасными. Но ОП не спросил, было ли это полезно для каких-то целей, они спросили, был ли этот метод "идеальным ГСЧ". Хотя они не прояснили, что они подразумевают под «совершенным», тот факт, что он не подходит для одного из основных видов использования ГСЧ, кажется очень актуальным для ответа на этот вопрос.
Джеффри Брент

7

( обновлено после того, как многие люди указали, что генератор случайных чисел - это не то же самое, что одна нормальная последовательность)

Если вы спросите, можете ли вы получить нормальную последовательность из π (т. Е. Все числа отображаются одинаково), то есть несколько ответов на mathoverflow. Например, ответ о распределении цифр числа Пи говорит:

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

Данные о распространении цифр см., Например, http://www.eveandersson.com/pi/precalculated-frequencies или https://thestarman.pcministry.com/math/pi/RandPI.html (первые 1000 цифр):

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

На mathoverflow есть также хорошие ответы на:


3
Если вы считаете, что вопрос дубликат, то почему вы отвечаете на него? Вы должны просто пометить его, а не усиливать нежелательное поведение при публикации.
dkaeae

8
@dkaeae На других сайтах нет дубликатов вопросов. Кроме того, на один и тот же вопрос на разных сайтах можно получить разные ответы. В этом случае такой сайт, как Математика, может не уделять много внимания проблемам безопасности. Смотрите также этот ответ . Обратите внимание, что мы не рекомендуем задавать один и тот же вопрос на нескольких сайтах одновременно, поскольку это приводит к напрасным усилиям. Но один и тот же вопрос разных людей в разное время на разных сайтах, как правило, в порядке.
Дискретная ящерица

6
К сожалению, просто потому, что число является нормальным, не означает, что вывод его цифр дает вам хороший ГСЧ. Выходы такого ГСЧ все еще полностью предсказуемы. Приемлемо ли это, может зависеть от приложения. Поэтому я не думаю, что это так просто, как сказать «пи нормально, дело закрыто».
DW

2
Это просто эмпирическое наблюдение для первых нескольких цифр? Что следует понимать под этим?
маршал ремесло

1
@WW Я упомянул, что собираюсь использовать комбинацию чисел, таких как π и 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.