PokerOddsCalc é um avaliador de mãos de pôquer simples que pode simular variantes de pôquer Texas Hold'em ou Omaha. A maioria das calculadoras de probabilidades de pôquer escritas em Python atualmente usam uma tabela hash para armazenar informações das cartas como bits para melhorar o desempenho ou usam um design OOP forte, que sacrifica o desempenho. O objetivo de desenvolvimento deste projeto é alcançar uma eficiência de simulação relativamente alta sem o uso de uma tabela hash.
Confira demo.ipynb para ver todas as funções que a ferramenta suporta ou continue abaixo para alguns breves exemplos.
instalar do github
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
Para processar dados em alta velocidade, todas as informações do cartão são convertidas em matrizes numpy para melhorar a velocidade.
As entradas do cartão são obtidas no formato do número: 23456789TJQKA seguido do naipe: dcsh.
Para classificar as cartas, usamos um sistema hexadecimal para atribuir força à carta, desde a carta mais significativa até a carta menos significativa. Existem 7.462 mãos de pôquer distintas, então criamos um algoritmo que transforma uma mão em um valor inteiro.
Em primeiro lugar, determinamos se a combinação de 5 cartas é do mesmo naipe/sequência. Isso pode identificar rapidamente o tipo de várias mãos.
Depois trabalhamos com valores numéricos das cartas onde 2 a A são representados por números inteiros de 2 a 14.
Classificamos os cartões para identificar rapidamente o tipo de cartão.
Primeiro passo
Segunda etapa
Terceiro Passo
Conclusão
Importar jogo
from PokerOddsCalc import HoldemTable , OmahaTable
Crie um jogo, especifique o número de jogadores e o tipo de deck (deck completo ou deck curto)
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
Distribua cartas aleatoriamente chamando a função next_round() em qualquer etapa do jogo ou atribua manualmente
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
Simule para gerar o resultado, especifique o número de cenários e o tipo de cálculo das probabilidades (para mais detalhes consulte demo.ipynb )
ht . simulate ()
#
{ 'Player 1 Win' : 50.31 ,
'Player 1 Tie' : 3.84 ,
'Player 2 Win' : 12.09 ,
'Player 2 Tie' : 0.41 ,
'Player 3 Win' : 11.4 ,
'Player 3 Tie' : 3.84 ,
'Player 4 Win' : 11.05 ,
'Player 4 Tie' : 0.41 ,
'Player 5 Win' : 11.31 ,
'Player 5 Tie' : 0.41 }
Ver tabela atual, mão atual ou resultado atual (se o jogo terminou)
ht . view_table ()
ht . view_hand ()
ht . view_result ()