Module (28%)
Section (29%)

Есть ли реальные случайные числа в компьютерах?

Еще один модуль, который стоит упомянуть, называется random.

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

Two dice – the concept of random

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


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





Генератор случайных чисел принимает значение, называемое seed(начальное), обрабатывает его как входное значение, вычисляет "случайное" число на его основе (метод зависит от выбранного алгоритма) и создает новое начальное значение.

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

 

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

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

К счастью, такая инициализация выполняется в Python во время импорта модуля.