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 ()