PokerOddsCalc es un sencillo evaluador de manos de póquer que puede simular las variantes de póquer Texas Hold'em u Omaha. La mayoría de las calculadoras de probabilidades de póquer puras escritas en Python actualmente utilizan una tabla hash para almacenar información de las cartas como bits para mejorar el rendimiento o utilizan un sólido diseño de programación orientada a objetos, que sacrifica el rendimiento. El objetivo de desarrollo de este proyecto es lograr una eficiencia de simulación relativamente alta sin el uso de una tabla hash.
Consulte demo.ipynb para ver todas las funciones que admite la herramienta o continúe a continuación para ver algunos ejemplos breves.
instalar desde github
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
Para procesar datos a alta velocidad, toda la información de la Tarjeta se convierte en numerosas matrices para mejorar la velocidad.
Las entradas de la tarjeta se toman en el formato de número: 23456789TJQKA seguido del palo: dcsh.
Para clasificar las cartas, utilizamos un sistema hexadecimal para asignar fuerza a la carta desde la más importante hasta la menos importante. Hay 7462 manos de póquer distintas, por lo que creamos un algoritmo que transforma una mano en un valor entero.
En primer lugar, determinamos si la combinación de 5 cartas es del mismo palo/escalera. Esto puede identificar rápidamente el tipo de varias manos.
Luego trabajamos con valores numéricos de las cartas donde del 2 al A están representados por números enteros del 2 al 14.
Clasificamos las tarjetas para identificar rápidamente el tipo de tarjeta.
Primer paso
Segundo paso
Tercer paso
Conclusión
Importar juego
from PokerOddsCalc import HoldemTable , OmahaTable
Crea un juego, especifica el número de jugadores y el tipo de mazo (mazo completo o mazo corto)
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
Reparte cartas aleatoriamente llamando a la función next_round() en cualquier paso del juego, o Asignalas manualmente
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
Simule para generar resultados, especifique la cantidad de escenarios y el tipo de cálculo de probabilidades (para obtener más detalles, 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 la tabla actual, la mano actual o el resultado actual (si el juego terminó)
ht . view_table ()
ht . view_hand ()
ht . view_result ()