PokerOddsCalc ist ein einfacher Pokerhand-Bewerter, der Texas Hold'em- oder Omaha-Pokervarianten simulieren kann. Die meisten reinen Poker-Quotenrechner, die derzeit in Python geschrieben sind, verwenden entweder eine Hashtabelle, um Karteninformationen als Bits zu speichern, um die Leistung zu verbessern, oder verwenden ein starkes OOP-Design, das die Leistung beeinträchtigt. Das Entwicklungsziel dieses Projekts besteht darin, eine relativ hohe Simulationseffizienz ohne den Einsatz einer Hashtabelle zu erreichen.
Schauen Sie sich demo.ipynb an, um sich alle Funktionen anzusehen, die das Tool unterstützt, oder fahren Sie unten mit einigen kurzen Beispielen fort.
Von Github installieren
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
Um Daten schnell zu verarbeiten, werden alle Karteninformationen zur Verbesserung der Geschwindigkeit in Numpy-Arrays umgewandelt.
Karteneingaben erfolgen im Zahlenformat: 23456789TJQKA gefolgt von der Farbe: dcsh.
Um die Karten einzuordnen, verwenden wir ein Hexadezimalsystem, um der Karte von der höchstwertigen Karte bis zur am wenigsten signifikanten Karte ihre Stärke zuzuordnen. Da es 7462 verschiedene Pokerhände gibt, haben wir einen Algorithmus entwickelt, der eine Hand in einen ganzzahligen Wert umwandelt.
Zuerst bestimmen wir, ob die 5-Karten-Kombination gleichwertig/straight ist. Dadurch kann der Typ mehrerer Hände schnell identifiziert werden.
Dann arbeiten wir mit Zahlenwerten der Karten, wobei 2 bis A durch ganze Zahlen von 2 bis 14 dargestellt werden.
Wir sortieren die Karten, um den Kartentyp schnell zu erkennen.
Erster Schritt
Zweiter Schritt
Dritter Schritt
Abschluss
Spiel importieren
from PokerOddsCalc import HoldemTable , OmahaTable
Erstellen Sie ein Spiel, geben Sie die Anzahl der Spieler und den Decktyp (Volldeck oder Kurzdeck) an.
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
Verteilen Sie Karten nach dem Zufallsprinzip, indem Sie die Funktion next_round() in einem beliebigen Schritt im Spiel aufrufen, oder weisen Sie sie manuell zu
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
Simulieren Sie, um ein Ergebnis zu generieren, geben Sie die Anzahl der Szenarien und die Art der Quotenberechnung an (weitere Informationen finden Sie unter 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 }
Aktuelle Tabelle, aktuelle Hand oder aktuelles Ergebnis anzeigen (falls das Spiel beendet ist)
ht . view_table ()
ht . view_hand ()
ht . view_result ()