Открыть сервисСервис

Рандомус — генератор случайных чисел

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

Общее понятие

В основе любого генератора случайных чисел лежит источник энтропии — физический процесс, результат которого заранее неизвестен. Программные генераторы, не имеющие доступа к такому источнику, называются псевдослучайными (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-ФЗ «О государственном регулировании деятельности по организации и проведению азартных игр».

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru