Неделю назад я взял интервью у директора компании «Connective Games LLC» Константина Зубарева, который рассказал о честности работы ГСЧ в комнатах, которые обслуживает их компания. В рамках нашей беседы Константин дал обещание, что в скором времени расскажет о том, как же устроен их ГСЧ, который используется в таких комнатах как: PokerDOM, RuPoker, PokerMIRA, Europe-bet, Aconcagua Network и других. В этой статье вы узнаете:
- Как именно формируется генератор случайных чисел в покере
- Как ГСЧ используется в покерных раздачах
- Как ГСЧ проверяется и тестируется на честность
Предполагаю, что некоторых читателей отпугнет ряд специфических терминов и обозначений в тексте, но без них сложно описать технические особенности работы СГЧ. Тем же, “кто в теме” или просто желает разобраться как же все устроено, думаю будет вполне интересно.
Как устроен ГСЧ от «Connective Games»
Процесс обеспечения случайного и непредсказуемого порядка карт в покерном ПО Connective Games включает 3 составляющих:
- Генератор случайных чисел (ГСЧ);
- Использование ГСЧ при тасовке и раздаче карт;
- Независимая проверка ГСЧ.
1. Генератор случайных чисел (ГСЧ)
Хороший генератор случайных чисел должен выдавать непредсказуемую последовательность чисел без каких-либо закономерностей или зависимостей, т.е. неотличимую от последовательности действительно случайных чисел.
ГСЧ Connective Games построен на основе нескольких источников случайных чисел, данные которых комбинируются:
- Криптографически стойкий программный SHA-1 алгоритм в приложении (реинициализация после получения 2^20 бит);
- Алгоритм операционной системы, использующий аппаратные источники энтропии (тепловой шум процессора, тайминги прерываний, сетевых и дисковых операций);
- Аппаратный генератор случайных чисел Quantis, разработанный компанией ID Quantique, использующий квантовую энтропию (если доступен).
Комбинация источников гарантирует, что финальная последовательность действительно случайна, устойчива к компрометации одного компонента и имеет достаточную производительность.
2. Использование ГСЧ
Для тасовки карт во всех наших покерных играх используется так называемый Continuous Shuffle (раздача случайной карты по ходу игры, или «постоянная тасовка») со следующими особенностями:
— Используется один экземпляр ГСЧ для всех раздач в системе;
— При создании стола также создается колода deck из 52 карт в начальном состоянии;
— В начале каждой раздачи на столе, количество уже розданных карт dealt = 0;
— Когда игре требуется карта:
- Шаг 1: ГСЧ генерирует случайное число nextCardIndex в диапазоне [dealt, 51];
- Шаг 2: Система обменивает карты в колоде deck[nextCardIndex] и deck[dealt];
- Шаг 3: В игру передается карта deck[dealt] и увеличивается dealt = dealt + 1;
— По завершении раздачи, колода deck сохраняет свое состояние для использования в следующей раздаче.
Во всех играх использование ГСЧ одинаково, за исключением игр, правила которых содержат специфические операции с колодой. Например, в 32-карточном Дро (32 Card Draw), если при обмене карт в колоде не хватает, то повторно используются карты, сброшенные другими игроками. Или в Семикарточном Стаде (7 Card Stud), когда за столом 8 игроков, также не хватает карт и 7 карту раздают общей для всех. При этом Китайский покер работает с колодой в точности как Холдем, несмотря на то, что игра, казалось бы, совсем другая.
Еще заметим, что Continuous Shuffle обеспечивает дополнительную энтропию для тасовки с ростом количества одновременно играемых раздач.
3. Независимая проверка ГСЧ
Все люди могут ошибаться. Поэтому наша реализация ГСЧ проверялась признанной независимой лабораторией, специализирующейся на тестировании в области онлайн игр. В рамках проверки предоставляется документация, исходные коды, а также сервера для проведения тестирования и сбора данных.
Тестирование нашего ГСЧ включало в себя следующие шаги:
- Анализ реализации ГСЧ (а именно изучение документации и исходных кодов, теоретический анализ, оценка параметров ГСЧ, процедуры инициализации/реинициализации программных компонентов ГСЧ);
- Сбор данных для статистического тестирования (миллионы колод);
- Оценка качества ГСЧ посредством набора статистических тестов DIEHARD;
- Проверка распределения карт в колодах;
- Электронная подпись реализации ГСЧ.
В результате ГСЧ Connective Games был сертифицирован Gaming Laboratories International (GLI) для строго-регулируемых юрисдикций. Сертификат можно посмотреть тут.