Рандомус — генератор случайных чисел¶
Рандомус — обобщённое название класса компьютерных программ, онлайн-сервисов и аппаратных устройств, предназначенных для генерации случайных или псевдослучайных чисел. Термин используется преимущественно в русскоязычной среде как собирательное обозначение генераторов случайных чисел (ГСЧ), применяемых в играх, лотереях, криптографии, статистическом моделировании и научных расчётах. Под «рандомусом» обычно понимают как программные генераторы, встроенные в приложения и языки программирования, так и автономные сервисы, выдающие случайные значения по запросу пользователя.
¶Общее понятие
В основе любого генератора случайных чисел лежит источник энтропии — физический процесс, результат которого заранее неизвестен. Программные генераторы, не имеющие доступа к такому источнику, называются псевдослучайными (PRNG): они вычисляют последовательность чисел по детерминированному алгоритму из начального значения — так называемого зерна (seed). Аппаратные генераторы (TRNG) опираются на физические шумы: тепловое движение электронов, радиоактивный распад, атмосферные помехи или время между нажатиями клавиш.
Различие принципиально: псевдослучайная последовательность воспроизводима при известном зерне, тогда как истинно случайная — нет. Именно поэтому в криптографии предъявляются повышенные требования к источникам энтропии, а в играх и симуляциях часто достаточно качественного PRNG.
¶История
Первые механические устройства для получения случайных значений появились задолго до компьютеров: игральные кости, жребий, урны с шарами. В 1927 году английский статистик Леонард Типпетт опубликовал таблицы случайных чисел, полученные вручную. В 1947 году компания RAND Corporation выпустила книгу «A Million Random Digits with 100,000 Normal Deviates» — таблицу из миллиона случайных цифр, сгенерированных электронным устройством на основе шумового сигнала.
С появлением ЭВМ возникла потребность в программной генерации. В 1946 году Джон фон Нейман предложил метод середины квадратов, оказавшийся несовершенным из-за быстрого вырождения последовательности. В 1951 году появился линейный конгруэнтный метод, ставший основой многих библиотечных генераторов. В 1997 году братья Макото и Такудзи Мацумото разработали алгоритм «Вихрь Мерсенна» (Mersenne Twister), который до сих пор широко применяется в языках Python, PHP, Ruby и других.
В России генераторы случайных чисел развивались в рамках вычислительной математики: в 1960–1970-е годы в Академии наук СССР и в вычислительных центрах разрабатывались собственные алгоритмы для задач метода Монте-Карло, применявшихся в ядерной физике и статистическом моделировании.
¶Классификация
| Тип | Принцип | Примеры применения |
|---|---|---|
| Псевдослучайные (PRNG) | Детерминированный алгоритм | Игры, симуляции, тесты |
| Криптостойкие (CSPRNG) | Алгоритм с криптостойкостью | Шифрование, токены, пароли |
| Аппаратные (TRNG) | Физический шум | Криптография, лотереи |
| Гибридные | Комбинация источников | Серверы, облачные сервисы |
Отдельно выделяют генераторы, выдающие числа в заданном диапазоне, с заданным распределением (равномерным, нормальным, экспоненциальным) или с исключением повторов — так называемые генераторы без возвращения.
¶Применение
Сфера применения генераторов случайных чисел широка:
- Азартные игры и лотереи. Электронные лотереи и онлайн-казино используют сертифицированные ГСЧ, прошедшие проверку независимых лабораторий.
- Криптография. Генерация ключей, векторов инициализации, одноразовых паролей и криптографических солевых значений.
- Научные расчёты. Метод Монте-Карло в физике, химии, экономике и биологии.
- Компьютерные игры. Определение выпадения предметов, поведения противников, генерация уровней.
- Статистика. Выборки, рандомизация клинических испытаний, бутстрэп-методы.
- Машинное обучение. Инициализация весов нейросетей, разбиение данных на выборки.
В повседневной речи слово «рандомус» часто употребляется иронически — для обозначения случайного, непредсказуемого поведения или произвольного выбора.
¶Проверка качества
Качество генератора оценивается статистическими тестами: проверкой равномерности распределения, отсутствием корреляций, длиной периода до повторения. Среди известных наборов тестов — TestU01, Diehard, NIST Statistical Test Suite. Генератор, прошедший все тесты, всё равно может иметь скрытые закономерности, поэтому для критичных задач рекомендуют комбинировать несколько источников энтропии.
¶Правовое регулирование в России
В Российской Федерации требования к генераторам случайных чисел, используемым в криптографии, устанавливаются Федеральной службой безопасности и регулируются национальными стандартами ГОСТ. Для лотерей и азартных игр применяются отдельные нормативные акты, предусматривающие обязательную сертификацию оборудования и программного обеспечения. Операторы обязаны обеспечивать непредсказуемость и документируемость результатов.
¶Интересные факты
- Книга RAND Corporation с миллионом случайных цифр до сих пор продаётся и используется как курьёзный пример.
- Алгоритм «Вихрь Мерсенна» имеет период 2^19937 − 1 — число, превышающее количество атомов в наблюдаемой Вселенной.
- В 2013 году исследователи показали, что генератор случайных чисел, встроенный в некоторые смартфоны на базе Android, содержал уязвимость, позволявшую предсказывать криптографические ключи.
- Существует понятие «ошибка игрока» — ошибочное убеждение, что после серии одинаковых исходов вероятность противоположного возрастает, хотя генератор не обладает памятью.
Источники: RAND Corporation, A Million Random Digits with 100,000 Normal Deviates; Matsumoto M., Nishimura T., Mersenne Twister; NIST Statistical Test Suite; ГОСТ Р 34.12-2015; Федеральный закон № 244-ФЗ «О государственном регулировании деятельности по организации и проведению азартных игр».
