Как работают реальные проверки RNG
Проверка RNG (генератора случайных чисел) — это не один «магический тест», а цепочка инженерных процедур. Её цель — доказать три вещи: (1) поток чисел статистически похож на идеальный случайный, (2) он правильно «мапится» в игровые события (символы, карты, мультипликаторы), (3) проверенная версия неизменно крутится на продакшене. Ниже — как устроен полный цикл.
1) Что именно проверяют (три уровня)
1. Сырые выходы RNG — чистая статистика потока (без игрового интерфейса).
2. Мэппинг RNG → события игры — соответствие частот комбинаций заявленной математике (RTP/волатильность).
3. Жизненный цикл и целостность — что на проде работает ровно та сборка, которую сертифицировали, и её нельзя незаметно подменить.
2) До релиза: лабораторная сертификация
A. Белый бокс (по коду и архитектуре)
Алгоритм: класс PRNG/CSPRNG, способ «посева», пересев (reseeding), изоляция потоков, отсутствие общих состояний между играми.
Источники энтропии: системный пул/аппаратный шум; проверяется достаточность битовой энтропии на старт.
Менеджмент состояния: nonce/счётчик, защита от повторного использования, независимость потоков для разных игр/столов.
B. Чёрный бокс (по выходам)
Генерируют очень большие выборки (сотни миллионов–миллиарды бит/чисел).
Прогоняют через батареи тестов:- NIST SP 800-22: монобит, частоты по блокам, ран-тесты, дисбаланс нулей/единиц, аппрокс. энтропия, линейная сложность, спектральный (DFT) и др.
- Diehard/Dieharder: дни рождения (birthday spacings), блуждания (random walks), совпадения, ранги матриц и др.
- TestU01 (SmallCrush/Crush/BigCrush): самая строгая серия; ловит тонкие зависимости и короткие периоды.
- Гипотезы и p-values: не «чтобы все были 0.5», а чтобы они равномерно распределялись по [0;1]; учитывается множественность тестов (коррекция ложных срабатываний).
- Скользящие окна: те же тесты на подмножестве потоков (разные блок-сайзы), чтобы поймать нестационарность.
C. Верификация математики игры
Моделирование миллионов/миллиардов «виртуальных спинов/раздач»: эмпирический RTP сходится к заявленному (например, 96.00% ± допуск).
Проверка редких событий: частоты джекпотов, бонус-раундов, мультипликаторов, распределения выигрышей по квантилям.
Проверка мэппинга: таблицы соответствия «число RNG → символ/карта» без перекосов, равная вероятность всех позиций «деки/барабана».
Результат: отчёт с параметрами RNG, списком тестов/объёмов данных/порогов прохождения, хеш-суммами бинариев игры и целевым RTP.
3) На проде: непрерывный контроль
Телеметрия и алёрты
Сходимость RTP по агрегированным данным (дни/недели/месяцы) с доверительными интервалами.
Аномалии распределений: всплески повторов, перекосы символов, изменения дисперсии.
Онлайн-здоровье RNG: лёгкие встроенные самотесты (frequency/runs) на текущем потоке + периодические «тяжёлые» прогоны на снимках логов.
Скользящие окна и сезонность: сравнения со «старыми» эталонными периодами.
Целостность артефактов
Сверка хеш-сумм и цифровых подписей исполняемых файлов со «золотым» образцом из сертификации.
Политика «только подписанные релизы», двойное одобрение на деплой, аудит действий админов.
Реакция на инциденты
Пороговые значения → изолировать игру, включить «maintenance», выполнить роллбэк, зафиксировать снапшот, уведомить регулятора/партнёров, подготовить реплей логов.
4) Как устроены ключевые тесты (по-человечески)
Монобит/частота: нулей и единиц должно быть примерно поровну.
Runs/серии: длины подряд идущих 0/1 соответствуют теории.
DFT/спектральный: нет скрытых периодов/гармоник.
Линейная сложность/ранг матрицы: поток не описывается короткой линейной схемой.
Birthday spacings/коллизии: распределение совпадений как у идеального случайного.
Approx. Entropy/Serial: нет избыточных коротких паттернов.
Autocorrelation: соседние элементы независимы.
Важно: один «красный» тест не доказывает проблему — смотрят пакетно, с учётом множественной проверки и повторного прогона.
5) Сиды, пересев и независимость потоков
Seed формируют из нескольких источников энтропии; документируют процедуру старта и частоту reseeding.
Разные игры/столы — разные состояния RNG; запрет совместного состояния.
Учёт nonce/счётчика: каждое обращение уникально, исключена повторная выборка.
6) Мэппинг и презентация: где часто путают «честность»
RNG отдаёт число, а игра переводит его в событие. Проверяют, что таблица мэппинга:- не имеет «мёртвых» зон, равномерно покрывает пространство, фиксирована в версии (изменение = новая сертификация).
- Near-miss — визуальный эффект интерфейса. Его доля и логика жёстко заданы математикой; он не «подкручивает» RNG.
7) Логи и воспроизводимость
Каждый раунд получает ID, метки времени, сид/nonce, входные параметры, итог RNG и результат после мэппинга.
По логу лаборатория/оператор может воспроизвести исход и убедиться, что он соответствует алгоритму и данным раунда.
Логи неизменяемы, хранятся годами, бэкапятся; доступ — по регламенту.
8) Лайв-игры: чем заменяют RNG-тесты
Рулетка/карты: контроль оборудования (биение колеса, баланс, калибровка), процедуры дилера, авто-шуфлеры, смена колод, полная видеофиксация.
Статистический мониторинг номеров/карт в проде — ловит износ/дефекты и человеческий фактор.
9) «Provably fair»: что реально проверяет игрок
Сервер публикует хеш серверного сида заранее; после раунда раскрывает сид.
Игрок задаёт клиентский сид; итог считается по документированной формуле (часто HMAC/AES+nonce).
Любой может пересчитать и убедиться, что результат не подменён после ставки.
Но это не гарантия высокого RTP — математика игры всё равно требует отдельного аудита.
10) Типичные ошибки и как их ловят
Плохая инициализация сида → ловится ранними тестами и аномалиями в первых окнах.
Повторное состояние/nonce reuse → дубликаты/корреляции, детект в Diehard/TestU01.
Дрейф после апдейта (горячая правка) → алёрты на расхождение хешей/метрик.
Слабый PRNG → «провалы» в BigCrush, частотные всплески, структура в DFT.
Чек-листы
Для студии/провайдера
- Документирован алгоритм RNG, сидинг, reseeding, разделение потоков.
- Прогоны NIST/Dieharder/TestU01 с достаточным объёмом и отчётами о p-values.
- Масс-симуляции игры: RTP, дисперсия, квантили выигрышей, редкие события.
- Версионирование/подписи/хеши артефактов; запрет неподписанных релизов.
- Пострелизные алёрты на RTP/распределения/повторы; план изоляции/роллбэка.
Для оператора
- Сверяю сертификаты RNG/игр и фактические версии в проде (хеш-контроль).
- Мониторю сходимость RTP и аномалии по всем тайтлам; есть пороги и авто-алёрты.
- Храню неизменяемые логи; готов быстрый экспорт по тикету.
- Процедура инцидента: стоп игры → роллбэк → уведомления → публичный отчёт.
Для игрока
- Смотрю инфо-экран игры: RTP/правила/версия/макс-выигрыш.
- Играю у операторов с видимыми инструментами РГ (лимиты/история/таймаут).
- В споре запрашиваю ID раунда и выписку; результат должен воспроизводиться.
- Не путаю честность RNG с волатильностью: «сухие» полосы нормальны.
Реальные проверки RNG — это строгая статистика + контроль мэппинга + дисциплина версий и логов. Лаборатория подтверждает, что поток равноправен и независим; симуляции доказывают соответствие заявленному RTP; продакшен-мониторинг гарантирует, что проверенная сборка не менялась и ведёт себя так же, как на тестах. Когда все три уровня работают вместе, «честность» перестаёт быть обещанием и становится свойством системы.