Генератор случайных чисел — это алгоритм и процесс, который отвечает за раздачу карт в покере. ГСЧ выдаёт непредсказуемую последовательность чисел без каких-либо закономерностей или зависимостей.
Pokerbet использует генератор случайных чисел от компании Connective Games LLC, которая уже более 10 лет работает на рынке, поставляя программное обеспечение для покер-румов в Латинской Америке, Индии, Грузии и других странах.
ГСЧ от Connective Games построен на основе нескольких источников случайных чисел, данные которых комбинируются:
— криптографически стойкий программный SHA-1 алгоритм в приложении (реинициализация после получения 2^20 бит);
— алгоритм операционной системы, использующий аппаратные источники энтропии (тепловой шум процессора, тайминги прерываний сетевых и дисковых операций);
— аппаратный генератор случайных чисел Quantis, разработанный компанией ID Quantique, использующий квантовую энтропию.
Комбинация данных этих источников гарантирует, что финальная последовательность действительно случайна, устойчива при компрометации одного из компонентов и имеет достаточную производительность.
Для тасовки карт во всех наших покерных играх используется так называемый Continuous Shuffle (раздача случайной карты по ходу игры, или ”постоянная тасовка“) со следующими особенностями:
— используется один экземпляр ГСЧ для всех раздач в системе;
— при создании стола также создается колода (deck) из 52 карт в начальном состоянии;
— в начале каждой раздачи на столе, количество уже розданных карт (dealt) = 0.
Когда игре требуется карта, система проделывает несколько шагов:
Шаг 1. ГСЧ генерирует случайное число nextCardIndex в диапазоне [dealt, 51].
Шаг 2. Система обменивает карты в колоде deck[nextCardIndex] и deck[dealt].
Шаг 3. В игру передается карта deck[dealt] и увеличивается dealt = dealt + 1.
По завершении раздачи колода сохраняет своё состояние для использования в следующей раздаче.
Во всех играх использование ГСЧ одинаково, за исключением игр, правила которых содержат специфические операции с колодой. Например, в 32-карточном Дро (32 Card Draw), если при обмене карт в колоде не хватает, то повторно используются карты, сброшенные другими игроками. При этом Китайский покер работает с колодой по принципу Безлимитного Холдема.
Кроме того, Continuous Shuffle обеспечивает дополнительную энтропию для тасовки с ростом количества одновременно играемых раздач.
Генератор случайных чисел от Connective Games LLC на Pokerbet дважды успешно прошёл проверку и получил сертификаты от признанных мировых компаний Gaming Lab и iTech Lab!
В ходе проверки проводились:
— анализ реализации ГСЧ (изучение документации и исходных кодов, теоретический анализ, оценка параметров ГСЧ, процедуры инициализации/реинициализации программных компонентов ГСЧ);
— сбор данных для статистического тестирования (на основе миллионов колод);
— оценка качества ГСЧ посредством набора статистических тестов DIEHARD;
— проверка распределения карт в колодах;
— электронная подпись реализации ГСЧ и другие.