ORLOV JOGOS

Blog · Video Poker ·

Como funciona o embaralhamento em um jogo de cartas digital

Um baralho de 52 cartas tem cerca de 8 × 1067 ordenações. Um algoritmo alcança todas elas em 51 trocas, e a variante que parece idêntica torna algumas ordenações 25% mais prováveis que outras.

Um baralho físico é embaralhado de forma imperfeita e geralmente se safa. Um baralho digital não tem essa margem. Ele é embaralhado por algumas linhas de código que ou produzem cada ordenação com probabilidade igual, ou não produzem — e a diferença nunca aparece na tela; ela aparece em uma tabela de frequências depois de alguns milhões de mãos. Existe uma forma padrão de fazê-lo corretamente, uma forma bem conhecida de errar que parece mais completa, e um limite real que não tem relação com nenhuma das duas.

O tamanho do problema

Um baralho de 52 cartas pode ser organizado de 52 fatorial maneiras: 52 × 51 × 50 e assim por diante até 1, o que dá aproximadamente 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, em 51 trocas

O algoritmo correto é Fisher–Yates, e ele é curto o bastante para ser descrito em uma frase. Percorra um contador i da última carta até a segunda. A cada passo escolha uma posição j uniformemente ao acaso, de 0 até inclusive i, troque as cartas nas posições i e j, e siga adiante. Para 52 cartas são 51 trocas e 51 números aleatórios, e o baralho fica embaralhado em uma única passagem.

A razão de funcionar é um argumento de contagem. A primeira etapa tem 52 escolhas de j, a segunda 51, a terceira 50, até 2 na última etapa: 52! execuções distintas do algoritmo, cada uma igualmente provável porque cada escolha foi uniforme. Há também exatamente 52! ordenações, e nenhuma duas execuções produzem a mesma. Uma correspondência um a um entre execuções igualmente prováveis e ordenações possíveis é exatamente o que um embaralhamento uniforme significa, então o embaralhamento é uniforme — não aproximadamente, exatamente.

O erro de um a mais que o estraga

A variante tentadora escolhe j do baralho inteiro a cada vez — de 0 a 51 — em vez de ir de 0 até 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 execuções igualmente prováveis em vez de 52!, e 5252 não é múltiplo de 52!, então as ordenações não podem sair igualmente distribuídas.

Três cartas tornam isso concreto o bastante para conferir à mão. A versão errada tem 33 = 27 execuções igualmente prováveis distribuídas em 6 ordenações, o que exigiria 4.5 execuções cada. Em vez disso, três ordenações recebem 5 execuções e três recebem 4, então um conjunto é 25% mais provável que o outro. Com quatro cartas é pior: 44 = 256 execuções sobre 24 ordenações, e as contagens vão de 8 a 15, o que significa que a ordenação mais provável aparece quase duas vezes mais que a menos provável. O viés não diminui conforme o baralho cresce. Ele apenas deixa de ser algo que você conseguiria notar.

Onde está o limite real

Um embaralhamento correto ainda é tão bom quanto os números aleatórios que o alimentam, e é aqui que um jogo de navegador ou celular tem uma limitação real. Math.random no motor Chromium em que esses jogos rodam, é um gerador chamado xorshift128+, que carrega 128 bits de estado. Isso limita o número de sequências distintas que ele pode produzir a 2128, cerca de 3.4 × 1038. Set that against 8.07 × 1067 ordenações, e a fração alcançável fica em torno de 4 × 10-30. Almost every ordering of the deck cannot be produced at all.

Isso soa fatal e não é, e a distinção é a parte útil deste artigo. Uma mão de video poker nunca expõe uma ordenação de 52 cartas. Ela expõe cinco cartas, e depois até cinco mais. Há 52 × 51 × 50 × 49 × 48 = 311,875,200 distribuições ordenadas de cinco cartas, e 2,598,960 mãos distintas de cinco cartas. Espalhe 3.4 × 1038 estados iniciais possíveis sobre 311 milhões de distribuições, e cada distribuição ainda tem da ordem de 1030 estados por trás dela — uniforme com muito mais casas decimais do que qualquer quantidade de jogo poderia medir. A fraqueza de Math.random é que sua saída futura é previsível para quem conhece seu estado interno, o que é exatamente por que é a ferramenta errada quando há dinheiro envolvido e uma opção perfeitamente adequada para distribuir cinco cartas em um jogo de treino.

O que o embaralhamento não carrega

Dois detalhes decorrem da uniformidade, e ambos são onde as pessoas procuram uma distribuição viciada.

O primeiro é que nada sobrevive de uma mão para outra. Um baralho novo é montado e embaralhado do zero antes de cada distribuição, então a mão anterior não contribui em nada — e é por isso que contar cartas não funciona em uma máquina, e por que uma longa sequência sem prêmios não torna a próxima mão mais provável de pagar.

O segundo é que não importa de qual extremidade do baralho as cartas saem. Uma implementação pode distribuir as cinco cartas do topo e tirar as cartas de troca da base, o que parece que deveria significar algo. Depois de um embaralhamento uniforme, cada posição do baralho tem a mesma distribuição, então topo, base e meio são indistinguíveis, e a escolha é uma comodidade para quem escreveu o código, não um fato sobre o jogo. O mesmo vale para embaralhar duas vezes: um embaralhamento uniforme aplicado a um baralho já uniforme continua uniforme, então a segunda passagem não acrescenta nada.

A qualidade do embaralhamento e a justiça da distribuição são questões separadas, e confundi-las é o erro fácil. Um jogo pode rodar um Fisher–Yates de manual sobre um baralho de 52 cartas e depois trocar uma das cinco cartas antes de exibi-la na tela, e nada no embaralhamento revelaria isso. Se o embaralhamento é uniforme pode ser respondido com algumas linhas de código. Se a mão que você está vendo é a saída não modificada do embaralhamento é outra pergunta, e em um jogo de fichas grátis, sem regulador, a resposta honesta muitas vezes é não — inclusive para o jogo abaixo.

O resumo é curto. Fisher–Yates de 0 até i, 51 trocas, cada ordenação igualmente provável; a variante do baralho inteiro é enviesada, de modo invisível além de cerca de cinco cartas. O gerador não alcança a maioria das ordenações de um baralho completo, e para um jogo de cinco cartas isso é irrelevante. Nada disso responde o que acontece entre o embaralhamento e a tela, que é a única parte de uma distribuição digital que vale desconfiar.

Video Poker: Jacks or Better embaralha exatamente como descrito acima — um baralho novo de 52 cartas antes de cada mão, Fisher–Yates de 0 até i, 51 trocas, guiado 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 manter em vez de julgar com que frequência as mãos saem. Tem quatro máquinas, cada uma com sua própria tabela fixa: Jacks or Better desde o início, Deuces Wild no nível 3, Bonus Poker no nível 8 e Double Bonus no nível 15, com Triple e Five Play no nível 10. Você começa com 1,000 fichas, aposta 5, 10, 20 ou 50 por mão, e recebe mais 200 uma vez por dia; dicas de estratégia farão brilhar a manutenção sugerida. Funciona offline, e as fichas não têm valor em dinheiro.

Baixar no Google Play