ORLOV JUEGOS

Blog · Video Poker ·

Cómo funciona el barajado en un juego de cartas digital

Un mazo de 52 cartas tiene unas 8 × 1067 ordenaciones. Un algoritmo las alcanza todas en 51 intercambios, y la variante que parece idéntica hace que algunas ordenaciones sean un 25% más probables que otras.

Un mazo físico se baraja de forma imperfecta y casi siempre sale bien. Un mazo digital no tiene ese margen. Se baraja con unas pocas líneas de código que producen cada ordenación con igual probabilidad o no lo hacen, y la diferencia nunca se ve en pantalla: se ve en una tabla de frecuencias tras unos pocos millones de manos. Hay una forma estándar y correcta de hacerlo, una forma conocida de equivocarse que parece más exhaustiva, y un límite real que no tiene que ver con ninguna de las dos.

El tamaño del problema

Un mazo de 52 cartas puede ordenarse de 52 factorial formas: 52 × 51 × 50 y así hasta 1, lo que da unas 8.07 × 1067. Calling a deck shuffled is a claim about that number: that each of those orderings is exactly as likely as every other. It is a stronger claim than it sounds, and it is what the code must deliver.

Fisher–Yates, en 51 intercambios

El algoritmo correcto es Fisher–Yates, y es lo bastante corto para enunciarlo en una frase. Recorre un contador i desde la última carta hasta la segunda. En cada paso elige una posición j uniformemente al azar desde 0 hasta e incluyendo i, intercambia las cartas en i y j, y sigue. Para 52 cartas son 51 intercambios y 51 números aleatorios, y el mazo queda barajado en una sola pasada.

La razón por la que funciona es un argumento de conteo. El primer paso tiene 52 opciones para j, el segundo 51, el tercero 50, hasta 2 en el último paso: 52! ejecuciones distintas del algoritmo, cada una igual de probable porque cada elección fue uniforme. Además hay exactamente 52! ordenaciones, y dos ejecuciones nunca producen la misma. Una correspondencia uno a uno entre ejecuciones igual de probables y ordenaciones posibles es exactamente lo que significa un barajado uniforme, así que el barajado es uniforme — no aproximadamente, exactamente.

El fallo de un desplazamiento

La variante tentadora elige j de todo el mazo cada vez — de 0 a 51 — en lugar de de 0 a i. It looks like it should be better, because every card can move anywhere at every step. It is not uniform, and the counting argument shows why immediately: there are now 5252 ejecuciones igualmente probables en lugar de 52!, y 5252 no es múltiplo de 52!, así que las ordenaciones no pueden salir a partes iguales.

Tres cartas lo hacen lo bastante concreto para comprobarlo a mano. La versión errónea tiene 33 = 27 ejecuciones igualmente probables repartidas en 6 ordenaciones, lo que daría 4.5 ejecuciones por ordenación. En cambio, tres ordenaciones reciben 5 ejecuciones y tres reciben 4, así que un conjunto es un 25% más probable que el otro. Con cuatro cartas es peor: 44 = 256 ejecuciones sobre 24 ordenaciones, y los recuentos van de 8 a 15, lo que significa que la ordenación más probable aparece casi el doble de veces que la menos probable. El sesgo no se desvanece al crecer el mazo. Simplemente deja de ser algo que puedas notar.

Dónde está el verdadero techo

Un barajado correcto sigue siendo tan bueno como los números aleatorios que lo alimentan, y aquí es donde un juego de navegador o de teléfono tiene una limitación real. Math.random en el motor Chromium en el que se ejecutan estos juegos hay un generador llamado xorshift128+, que tiene 128 bits de estado. Eso limita a 2128, unas 3.4 × 1038. Set that against 8.07 × 1067 ordenaciones, y la fracción alcanzable ronda 4 × 10-30. Almost every ordering of the deck cannot be produced at all.

Suena fatal y no lo es, y la distinción es la parte útil de este artículo. Una mano de video póker nunca expone una ordenación de 52 cartas. Expone cinco cartas, y luego hasta cinco más. Hay 52 × 51 × 50 × 49 × 48 = 311,875,200 repartos ordenados de cinco cartas, y 2,598,960 manos distintas de cinco cartas. Repartir 3.4 × 1038 posibles estados iniciales repartidos entre 311 millones de repartos, y cada reparto aún tiene del orden de 1030 estados detrás de él: uniforme con muchas más cifras decimales de las que cualquier cantidad de juego podría medir. La debilidad de Math.random es que su salida futura es predecible para cualquiera que conozca su estado interno, justo por eso es la herramienta equivocada cuando hay dinero de por medio y una perfectamente adecuada para repartir cinco cartas en un juego de práctica.

Lo que el barajado no transmite

Dos detalles se derivan de la uniformidad, y en ambos es donde la gente busca un reparto amañado.

La primera es que nada sobrevive a una mano. Antes de cada reparto se construye y baraja un mazo nuevo desde cero, así que la mano anterior no aporta nada — que es la razón por la que contar cartas no puede funcionar en una máquina, y por qué una larga racha sin premio no hace más probable que la siguiente mano pague.

La segunda es que no importa de qué extremo del mazo salen las cartas. Una implementación podría repartir las cinco cartas desde arriba y tomar las cartas de robo desde abajo, lo que parece que debería significar algo. Tras un barajado uniforme, cada posición del mazo tiene la misma distribución, así que arriba, abajo y en medio son indistinguibles, y la elección es una comodidad para quien escribió el código y no un hecho del juego. Lo mismo pasa con barajar dos veces: un barajado uniforme aplicado a un mazo ya uniforme sigue siendo uniforme, así que la segunda pasada no aporta nada.

La calidad del barajado y la equidad del reparto son cuestiones separadas, y confundirlas es el error fácil. Un juego puede hacer un Fisher–Yates de libro sobre un mazo de 52 cartas y luego cambiar una de las cinco cartas antes de repartirla en pantalla, y nada del barajado lo revelaría. Si el barajado es uniforme se puede responder con unas pocas líneas de código. Si la mano que estás mirando es la salida sin modificar del barajado es otra pregunta, y en un juego de fichas gratis sin regulador la respuesta honesta suele ser que no — incluido el de abajo.

El resumen es breve. Fisher–Yates sobre 0 hasta i, 51 intercambios, cada ordenación igual de probable; la variante de todo el mazo está sesgada, de forma invisible a partir de unas cinco cartas. El generador no puede alcanzar la mayoría de ordenaciones de un mazo completo, y para un juego de cinco cartas eso es irrelevante. Nada de esto responde a lo que pasa entre el barajado y la pantalla, que es la única parte de un reparto digital que merece sospecha.

Video Poker: Jacks or Better baraja exactamente como se ha descrito arriba: un mazo nuevo de 52 cartas antes de cada mano, Fisher–Yates sobre 0 hasta i, 51 intercambios, impulsado por Math.random. It is also a free-chip practice game rather than a model of a regulated machine, so the paragraph above applies to it: the five dealt cards are not always the shuffle's untouched output. A dead deal is sometimes nudged towards a pair or a four-card flush, more often after a run of losses or when your balance is nearly gone, and a deal that already contains a pair or better is left alone. The draw is untouched — replacement cards come straight off the remaining shuffled deck — so the hold decisions you practise are the real ones even though hands arrive more kindly than the maths would send them. Use it to drill prioridades de mantener en lugar de juzgar con qué frecuencia aparecen las manos. Tiene cuatro máquinas, cada una con su propia tabla fija: Jacks or Better desde el principio, Deuces Wild en el nivel 3, Bonus Poker en el nivel 8 y Double Bonus en el nivel 15, con Triple y Five Play en el nivel 10. Empiezas con 1,000 fichas, apuestas 5, 10, 20 o 50 por mano, y recibes 200 más una vez al día; las pistas de estrategia iluminarán la mantenida sugerida. Funciona sin conexión, y las fichas no tienen valor en efectivo.

Consíguelo en Google Play