PokerOddsCalc est un simple évaluateur de mains de poker qui peut simuler les variantes de poker Texas Hold'em ou Omaha. La plupart des calculateurs de cotes de poker purs écrits en Python utilisent actuellement soit une table de hachage pour stocker les informations de carte sous forme de bits afin d'améliorer les performances, soit une conception POO solide, qui sacrifie les performances. L' objectif de développement de ce projet est d'atteindre une efficacité de simulation relativement élevée sans utiliser de table de hachage.
Consultez demo.ipynb pour examiner toutes les fonctions prises en charge par l'outil ou continuez ci-dessous pour quelques brefs exemples.
installer depuis github
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
Afin de traiter les données à une vitesse rapide, toutes les informations de la carte sont converties en tableaux numpy pour améliorer la vitesse.
Les entrées de la carte sont prises au format numérique : 23456789TJQKA suivi de la couleur : dcsh.
Pour classer les cartes, nous utilisons un système hexadécimal pour attribuer la force à la carte de la carte la plus significative à la carte la moins significative. Il existe 7462 mains de poker distinctes, nous avons donc créé un algorithme qui transforme une main en une valeur entière.
Tout d'abord, nous déterminons si la combinaison de 5 cartes est assortie/quinte. Cela permet d'identifier rapidement le type de plusieurs mains.
Ensuite nous travaillons avec les valeurs numériques des cartes où 2 à A sont représentés par des entiers de 2 à 14.
Nous trions les cartes pour identifier rapidement le type de carte.
Premier pas
Deuxième étape
Troisième étape
Conclusion
Importer un jeu
from PokerOddsCalc import HoldemTable , OmahaTable
Créez une partie, précisez le nombre de joueurs et le type de deck (deck complet ou deck court)
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
Distribuez les cartes au hasard en appelant la fonction next_round() à n'importe quelle étape du jeu, ou attribuez-les manuellement.
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
Simulez pour générer un résultat, spécifiez le nombre de scénarios et le type de calcul des cotes (pour plus de détails, veuillez consulter 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 }
Afficher la table actuelle, la main actuelle ou le résultat actuel (si le jeu est terminé)
ht . view_table ()
ht . view_hand ()
ht . view_result ()