Конвертация байтов в числа с плавающей запятой
Выходные данные функции генератора случайных чисел byteGenerator представляют собой шестнадцатеричный 32-байтовый хэш. Как объяснялось в разделе о реализации курсора, мы используем 4 байта данных для генерации одного результата игры. Каждый набор из 4 байтов используется для генерации чисел с плавающей точкой от 0 до 1 (4 байта используются вместо одного, чтобы обеспечить более высокий уровень точности при генерации числа с плавающей запятой). Именно с помощью этих сгенерированных чисел мы получаем формальные выходные данные алгоритма доказуемой честности, прежде чем они будут преобразованы в игровые события.
Преобразование чисел с плавающей запятой в игровые события
В то время как процесс генерации случайных результатов является универсальным для всех наших игр, именно на этом этапе генерации результатов игры реализуется уникальная процедура для определения перевода из чисел с плавающей запятой в игровые события.
Случайно сгенерированное число с плавающей запятой умножается на возможные оставшиеся исходы конкретной игры. Например, в игре, в которой используется колода из 52 карт, это можно сделать, просто умножив число с плавающей запятой на 52. Затем результат этого уравнения преобразуется в соответствующее игровое событие. Для игр, в которых требуется несколько игровых событий, этот процесс продолжается через каждые соответствующие 4 байта в цепочке результатов, которые были сгенерированы с помощью описанной функции byteGenerator.
Перемешивание игровых событий
Для таких игр, как Miner или Keno, где результаты не могут быть продублированы, мы используем алгоритм перетасовки Фишера-Йетса. Эта процедура влияет на процесс преобразования чисел с плавающей запятой в игровые события, потому что каждый раз, когда игровое событие транслируется, количество возможных оставшихся игровых событий уменьшается для любых оставшихся шагов в цепочке результатов.
Например, в покере сначала в полной колоде доступно 52 карты, поэтому первое игровое событие преобразуется путем умножения числа с плавающей запятой на 52. После того, как эта карта сдана, в колоде остается только 51 карта, и, следовательно, перевод второй карты выполняется путем умножения второго сгенерированного числа с плавающей запятой на 51. Это продолжается таким же образом, пока не будут сгенерированы все необходимые игровые события.
Что касается Miner и Keno, это просто вопрос реализации того же процесса, что и в покере, но изменение его на плитки или местоположения на доске или сетке, гарантируя, что каждое сгенерированное игровое событие не было сделано заранее в цепочке результатов.