Detrás de cada giro de una tragaperras hay un pequeño fragmento de código que produce un número, y ese número decide dónde se detiene cada carrete. Esta publicación explica cómo funciona en general ese tipo de generador, usando uno de juguete lo bastante pequeño para calcularlo a mano. El generador de abajo está inventado para la aritmética. La ficha de Google Play de Brasslight Slots no dice cómo elige el juego sus resultados, así que nada de lo aquí expuesto describe el código de esa aplicación. Describe el método estándar.
Pseudoaleatorio, no aleatorio
Un ordenador sigue instrucciones, así que no puede lanzar una moneda. Lo que sí puede hacer es ejecutar un generador pseudoaleatorio de números (PRNG): una regla fija que convierte un número en el siguiente, de modo que la secuencia parece sin patrón para cualquier prueba ordinaria. Tres partes importan.
- Estado. El número o números ocultos que el generador conserva entre sorteos.
- Regla de actualización. Un cálculo fijo que hace avanzar el estado y produce una salida.
- Semilla. El estado inicial. La misma semilla da la misma secuencia, siempre.
La semilla suele tomarse de algo impredecible, como el reloj del sistema o la reserva de entropía del sistema operativo, para que cada sesión empiece en un punto distinto. Después, la regla hace el trabajo.
Un generador que puedes ejecutar en papel
Uno de los diseños más antiguos es el generador congruencial lineal: multiplicar el estado por una constante, sumar otra constante y quedarse con el resto de dividir entre un módulo. El nuestro usa un módulo de 16:
siguiente = (5 × actual + 3) mod 16
Empieza con la semilla 7. Entonces 5 × 7 + 3 = 38, y 38 mod 16 = 6. Después, 5 × 6 + 3 = 33, y 33 mod 16 = 1. Luego, 5 × 1 + 3 = 8. Siguiendo así salen 6, 1, 8, 11, 10, 5, 12, 15, 14, 9 como primeras diez salidas. En este juguete, la salida es simplemente el estado.
Ejecútalo durante 16 pasos y aparece exactamente una vez cada número entero de 0 a 15: 6, 1, 8, 11, 10, 5, 12, 15, 14, 9, 0, 3, 2, 13, 4, 7. La decimoséptima salida vuelve a ser 6, y toda la secuencia se repite. La longitud de ese ciclo es el periodo, y aquí es 16.
Asignar un número a una parada del carrete
El generador da números. El juego necesita paradas. Como se describe en tiras de carretes y paradas, un carrete es una lista de posiciones, así que la asignación es un solo paso: tomas el número y lo usas como posición.
Supón que cada carrete tiene 16 paradas, numeradas de 0 a 15. Entonces una salida de 6 significa la parada 6, y una salida de 11 significa la parada 11. Un giro de cinco carretes toma cinco salidas seguidas, una por carrete. Desde la semilla 7, el primer giro usa 6, 1, 8, 11 y 10 para los carretes 1 a 5, y el segundo giro usa las siguientes cinco: 5, 12, 15, 14 y 9.
Cuando los números no se dividen exactamente
Los generadores reales producen rangos mucho mayores, a menudo de 32 bits, que son 232 = 4,294,967,296 valores posibles. Si un carrete tiene 20 paradas, el atajo habitual es quedarse con el resto de dividir entre 20. Pero 4,294,967,296 no es múltiplo de 20: es 20 × 214,748,364 + 16. Así que 16 de las paradas reciben 214,748,365 valores brutos cada una y 4 paradas reciben 214,748,364. La diferencia es de un valor en unos 214 millones, demasiado pequeña para importar, aunque el código cuidadoso la elimina descartando los valores sobrantes y volviendo a sortear.
Por qué un giro no predice el siguiente
Nuestro generador de juguete es un mal modelo de independencia. Una vez que ves una salida, conoces la siguiente con certeza: después del 6 viene el 1, siempre. Cualquiera que conozca la regla y vea un número podría predecir cada giro. Además, solo tiene 16 estados, así que puede producir solo 16 giros distintos, uno por estado inicial, mientras que carretes independientes de 16 paradas permitirían 165 = 1,048,576.
Los generadores serios resuelven ambos problemas con escala y diseño. El Mersenne Twister, un generador de uso general muy extendido, tiene un periodo de 219937 − 1, un número de más de 6,000 dígitos, así que ningún jugador llegará nunca al final del ciclo. En la práctica, el resultado de un giro no contiene ninguna información útil sobre el siguiente. Esa es la propiedad descrita en por qué una tragaperras nunca está 'a punto de pagar': la máquina no tiene memoria de resultados recientes en los que actúe, ni un calendario que intente recuperar.
Un generador es una regla determinista con un estado oculto. Su salida se convierte en un número de parada, uno por carrete, y lo que importa para la equidad de las probabilidades es que cada parada sea igualmente probable y que la secuencia sea difícil de predecir.
Lo que la asignación hace a las probabilidades
El generador no conoce los símbolos. Solo produce números de parada. Las probabilidades de un símbolo dependen de cuántas paradas lo muestran, que es la regla de cuenta sobre longitud de la publicación sobre la tira del carrete. Con 16 paradas y un símbolo en 2 de ellas, un carrete cae en él con probabilidad 2 ÷ 16 = 12.5%.
Una comprobación que puedes hacer
Elige cualquier semilla de 0 a 15 y ejecuta la regla de juguete durante 16 pasos: cada número de 0 a 15 debería aparecer una vez. Si vuelves a empezar desde la misma semilla obtienes el mismo giro, que es lo que significa una semilla.
Brasslight Slots: Casino Games es una tragaperras de 5 carretes con temática de gatos, con 243 formas de ganar, una bonificación Yarn Pick, una rueda de premios diarios y los giros Turbo y Auto. Usa solo monedas virtuales, no hay dinero real, y las monedas y gemas no tienen valor en efectivo.