Можно ли генерировать случайные числа с помощью моделирования физических процессов?

StackOverflow https://stackoverflow.com/questions/620921

  •  05-07-2019
  •  | 
  •  

Вопрос

Можно ли генерировать случайные числа с помощью моделирования физических процессов?

Если я имитирую физический бросок игральных костей (то есть, когда вы подбираете их, встряхиваете в руке, отпускаете на стол и записываете, какая сторона заканчивается "вверх" ...), получается ли """ случайное & Quot; номер или я бы просто сложную симуляцию, которая действительно ничего не дает.

Это было полезно?

Решение

У вас будет сложная симуляция, которая на самом деле ничего не даст.

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

Если вы не заполняете имитируемую среду "случайным образом" переменных (т. е. зависят от разных способов генерации случайных чисел), вы всегда будете возвращать одно и то же значение, потому что каждый шаг в процессе будет происходить каждый раз одинаково.

Скажем, вы использовали генератор базовых псевдослучайных чисел (PRNG):

Поскольку ваша симуляция будет такой же случайной, как и у другого используемого вами PRNG, вы можете просто использовать другой PRNG напрямую, без дополнительной работы! (Фактически, ваша симуляция может ничего не делать, кроме как сделать менее случайным, чем значения из вашего базового PRNG)

Другие советы

Да, у вас "просто сложная симуляция, которая действительно ничего не дает".

Зачем имитировать случайный физический процесс, если вы действительно можете использовать реальный?

В SO есть куча вопросов о генераторах случайных чисел. Вот только некоторые из них:

Генератор истинных случайных чисел

Существуют ли генераторы случайных чисел без состояния?

Какой тип случайного числа Генератор используется в игровой индустрии казино?

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

Однако нет никакой гарантии, что ваш случайный вывод будет того качества, которое вам необходимо для криптографии или других целей. Я был бы склонен думать, что в вашей продукции будут повторяться нежелательные повторяющиеся паттерны, и что слишком много работы пойдет на физику проблемы, и ее недостаточно для создания псевдослучайности. (Извините за слабое мытье, но это в двух словах.) Существуют эффективные генераторы псевдо-чисел, и я бы использовал одну из полок.

Тем не менее, это может быть интересным и информативным экспериментом для ваших собственных целей.

Позднее.

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

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

Сначала вам нужно определить «случайный». Вы можете генерировать тривиально непредсказуемые числа с помощью странного набора вычислений. Но вы не получите полезной случайности или равномерного распределения чисел.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top