Як працюють реальні перевірки 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; продакшен-моніторинг гарантує, що перевірена збірка не змінювалася і поводиться так само, як на тестах. Коли всі три рівні працюють разом, «чесність» перестає бути обіцянкою і стає властивістю системи.