Рандом

Материал из Неолурк
Перейти к навигации Перейти к поиску
Как работает рандом в играх
Загадка по теме

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

История[править]

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

После появления компьютеров сразу же были сделаны функции для генерации случайного результата, хотя на деле множество из них представляют собой псевдослучайные генераторы чисел. Например, в игре Герои меча и магии 3 действия противников в определённых ситуациях определяются рандомом, равно как и выпадение морали или удачи (есть определённый известный шанс). В то же время, если на одной и той же клетке напасть одной и той же армией, то при повторении ходов действия оппонента и случайные срабатывания будут теми же, так как применяется рандом на основе состояния игры. Для борьбы с подобным обычно добавляют в алгоритм различные факторы, меняющиеся со временем, самое простое это время с точностью до миллисекунд (может повториться, но шанс очень мал).

Для полноценного рандома необходимо использовать абсолютно случайные источники вроде космического излучения, однако на практике это сделать сложно — необходимо иметь реальный детектор такого излучения, что представляет дополнительные статьи затрат. В то же время часто использование таких источников в качестве зернышка для ГСПЧ, так что сочетается и высокая степень случайности, и возможность при необходимости воспроизвести последовательность при знании зернышка (seed). Например, интеловская технология для генерации случайных чисел используется шумы токов в системе.

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

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