PokerOddsCalc是一個簡單的撲克手牌評估器,可以模擬德州撲克或奧馬哈撲克變體。目前,大多數用 Python 編寫的純撲克賠率計算器要么使用哈希表將牌信息存儲為位元以增強性能,要么使用強大的 OOP 設計,但這會犧牲性能。該專案的開發目標是在不使用哈希表的情況下實現較高的模擬效率。
查看demo.ipynb以了解該工具支援的所有功能,或繼續下面的一些簡短範例。
從github安裝
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
為了快速處理數據,所有Card資訊都轉換為numpy數組以提高速度。
卡輸入的格式為數字:23456789TJQKA,後面跟著花色:dcsh。
為了對卡片進行排名,我們使用十六進制系統從最重要的卡片到最不重要的卡片來分配卡片的強度。有 7462 手不同的撲克手牌,因此我們創建了將手牌轉換為整數值的演算法。
首先,我們確定 5 張牌組合是否為同花/順子。這樣可以快速辨識幾隻手的類型。
然後我們處理卡片的數值,其中 2 到 A 由 2 到 14 的整數表示。
我們對卡片進行排序以快速識別卡片類型。
第一步
第二步
第三步
結論
導入遊戲
from PokerOddsCalc import HoldemTable , OmahaTable
創建遊戲,指定玩家數量和牌組類型(全牌組或短牌組)
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
透過在遊戲中的任何步驟呼叫 next_round() 函數來隨機分發卡片,或手動分配
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
模擬產生結果,指定場景數量和賠率計算類型(更多詳情請查看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 }
查看當前牌桌、當前牌局或當前結果(如果遊戲結束)
ht . view_table ()
ht . view_hand ()
ht . view_result ()