Как случайные функции могут быть действительно случайными? - PullRequest
5 голосов
/ 17 апреля 2011

Введение

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

Вопрос

Сегодня я проснулся с мыслью:

Привет, как случайные функции могут быть действительно случайными, если они созданы алгоритмом?

Подумайте об этом.Как вы могли бы создать функцию, которая имитирует случайность без уже встроенной концепции случайности?Я начал думать:

Привет, я бы взял массив int, затем я бы сделал [вещь], затем [вещь], чем [вещь] снова, затем я бы выбралтолько нечетные числа ... ecc

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

Возможно лисоздать случайность?Как создаются функции, которые возвращают случайные числа (например, rand() в PHP)?Как они могут симулировать случайность?

Ответы [ 5 ]

4 голосов
/ 17 апреля 2011

Функции, которые алгоритмически создают так называемые случайные числа: генераторы псевдослучайных чисел . Если вы знаете seed , использованный для генерации последовательности, то числа предсказуемы . Сама последовательность является статистически случайным распределением, но не является действительно случайным.

Там есть истинные генераторы случайных чисел, которые обычно включают в себя некоторые аппаратные средства, которые выбирают случайность из физического мира, например, радиоактивность или акустический шум. Наивной реализацией будет выборка доступа к жесткому диску и движений мыши. См. random.org для реального RNG.

Обязательный xkcd полоса :

getRandomNumber()...

1 голос
/ 17 апреля 2011

Прочтите том 2, глава 3 этой оригинальной работы , если вы хотите, чтобы математика стояла за ней.Вы можете купить его , чтобы выглядеть эффектно на вашей книжной полке.(Просто имейте в виду, что большинство людей, которые его покупают, никогда не читают его - по уважительной причине. Это ОЧЕНЬ плотно и ОЧЕНЬ трудно читается.) Короткий ответ, который не включает в себя массивные тома сложного текста, заключается в том, что «случайный»«числа, сгенерированные чисто алгоритмически, являются псевдослучайными , то есть они« достаточно случайны ».

1 голос
/ 17 апреля 2011

Есть причина, по которой они называются псевдослучайными числами; они не совсем случайны. Из Википедии:

Генератор псевдослучайных чисел (PRNG), также известный как детерминированный генератор случайных битов (DRBG), [1] является алгоритм генерации последовательности числа, которые приближаются к свойства случайных чисел. последовательность не является действительно случайной в этом это полностью определяется сравнительно небольшой набор начальных значения, называемые состоянием PRNG.

0 голосов
/ 06 сентября 2013

Я обычно "получаю миллисекунды" и делю его на псевдослучайное число.Это делает его еще более случайным и непредсказуемым.

0 голосов
/ 17 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...