De bytes a floats
La salida de la función de generación de números aleatorios (byteGenerator) es un hash hexadecimal de 32 bytes. Como se explica en la implementación del cursor, usamos 4 bytes de datos para generar un único resultado del juego. Cada grupo de 4 bytes se usa para generar floats entre 0 y 1 (se usan 4 bytes en lugar de uno para garantizar un mayor nivel de precisión al generar un float). A partir de estos floats generados derivamos la salida formal del algoritmo Provably Fair antes de que se traduzca en eventos del juego.
De floats a eventos del juego
Si bien el proceso para generar salidas aleatorias es universal para todos nuestros juegos, en este punto de la generación del resultado se aplica un procedimiento único para determinar cómo se traduce un float en un evento del juego.
El float generado aleatoriamente se multiplica por la cantidad de resultados posibles restantes del juego que se está jugando. Por ejemplo: en un juego que usa un mazo de 52 cartas, esto se hace simplemente multiplicando el float por 52. Luego, el resultado de esa operación se traduce en el evento del juego correspondiente. En los juegos en los que se requieren múltiples eventos, este proceso continúa con cada bloque correspondiente de 4 bytes en la cadena de resultados generada mediante la función byteGenerator descrita anteriormente.
Mezcla de eventos del juego
En juegos como Keno, Mines, Pump, Chicken y Video Poker, donde los resultados no se pueden duplicar, usamos el algoritmo de mezcla de Fisher-Yates. Este procedimiento influye en el proceso de conversión de floats a eventos del juego porque, cada vez que se traduce un evento, se reduce la cantidad de eventos posibles que quedan para los pasos siguientes en la cadena de resultados.
Por ejemplo, en Video Poker, al principio hay 52 cartas disponibles en el mazo completo, por lo que el primer evento del juego se traduce multiplicando el float por 52. Una vez que se reparte esa carta, quedan solo 51 cartas en el mazo, por lo que la conversión de la segunda carta se hace multiplicando el segundo float generado por 51. Esto continúa de la misma manera hasta que se generen todos los eventos del juego necesarios.
En Mines, Pump, Chicken y Keno, se trata simplemente de aplicar el mismo proceso que se explicó para Video Poker, pero llevándolo a casillas o ubicaciones dentro del tablero o la grilla, asegurando que cada evento del juego que se genere no se haya generado antes dentro de la cadena de resultados.
