Holdem计算器库
holdem-calc的Python项目详细描述
Holdem计算器
Holdem计算器库计算某个德克萨斯州的Holdem手将获胜的概率。这个概率可以通过运行蒙特卡罗方法来近似,或者通过模拟所有可能的手来精确计算。Holdem计算器还显示了每一组孔牌制作特定扑克的可能性。默认的蒙特卡罗模拟通常精确到最接近的百分比。可以通过增加运行的模拟次数来提高精度,但这将导致运行时间更长。在
命令行选项
-h, --help show this help message and exit
-b [card [card ...]], --board [card [card ...]]
Add board cards
-e, --exact Find exact odds by enumerating every possible board
-n N Run N Monte Carlo simulations
-i INPUT, --input INPUT
Read hole cards and boards from an input file.
Commandline arguments for hole cards and board will be
ignored
使用
我列举了几个例子来演示如何使用Holdem计算器。请注意,您可以混合和匹配命令行选项以满足您的需要。有关如何使用多进程Holdem计算器进行更快的计算,请参阅本节中的底部示例。在
默认用例:
^{pr2}$多人游戏用例:
$ python holdem_calc.py As Ks Td Jd 4h 4c
Winning Percentages:
(As, Ks) : 0.38166
(Td, Jd) : 0.33029
(4h, 4c) : 0.2853
Ties: 0.00275
Player1 Histogram:
High Card : 0.16582
Pair : 0.4193
Two Pair : 0.2321
Three of a Kind : 0.04763
Straight : 0.02355
Flush : 0.08369
Full House : 0.02572
Four of a Kind : 0.00146
Straight Flush : 1e-05
Royal Flush : 0.00072
Player2 Histogram:
High Card : 0.13874
Pair : 0.38832
Two Pair : 0.22959
Three of a Kind : 0.04561
Straight : 0.0889
Flush : 0.07811
Full House : 0.02649
Four of a Kind : 0.00162
Straight Flush : 0.00195
Royal Flush : 0.00067
Player3 Histogram:
High Card : 0.0
Pair : 0.34242
Two Pair : 0.38102
Three of a Kind : 0.12639
Straight : 0.02482
Flush : 0.02576
Full House : 0.08957
Four of a Kind : 0.00981
Straight Flush : 0.00021
Royal Flush : 0.0
Time elapsed(seconds): 2.0515730381
精确计算:
$ python holdem_calc.py As Ac 7d 8d --exact
Winning Percentages:
(As, Ac) : 0.768322681019
(7d, 8d) : 0.228739756492
Ties: 0.0029375624889
Player1 Histogram:
High Card : 0.0
Pair : 0.354008400378
Two Pair : 0.391353404536
Three of a Kind : 0.122024476962
Straight : 0.0131553742793
Flush : 0.0226425915024
Full House : 0.0875755706931
Four of a Kind : 0.00912221194367
Straight Flush : 6.5408946075e-05
Royal Flush : 5.25607602388e-05
Player2 Histogram:
High Card : 0.14545489586
Pair : 0.393180182958
Two Pair : 0.223752908362
Three of a Kind : 0.0444173464525
Straight : 0.0941649380017
Flush : 0.0710019949729
Full House : 0.0243624963791
Four of a Kind : 0.00141330044198
Straight Flush : 0.00225076855512
Royal Flush : 1.1680168942e-06
Time elapsed(seconds): 19.6590108871
提供的板:
$ python holdem_calc.py As Ac 7d 8d -b 6d 9d 2h
Winning Percentages:
(As, Ac) : 0.437373737374
(7d, 8d) : 0.562626262626
Ties: 0.0
Player1 Histogram:
High Card : 0.0
Pair : 0.518181818182
Two Pair : 0.384848484848
Three of a Kind : 0.0686868686869
Straight : 0.0
Flush : 0.0
Full House : 0.0272727272727
Four of a Kind : 0.0010101010101
Straight Flush : 0.0
Royal Flush : 0.0
Player2 Histogram:
High Card : 0.106060606061
Pair : 0.241414141414
Two Pair : 0.0787878787879
Three of a Kind : 0.0131313131313
Straight : 0.19696969697
Flush : 0.275757575758
Full House : 0.0
Four of a Kind : 0.0
Straight Flush : 0.0878787878788
Royal Flush : 0.0
Time elapsed(seconds): 0.0137040615082
提供的输入文件:
为了在一次运行中计算多个指针,用户可以选择允许Holdem计算器读取输入文件。输入文件的每一行都应该代表一个单独的计算。孔卡和板应使用“|”分隔器分开。在
$ cat input_file
Ad As Td Jd
Ad As Td Jd | 8d 9d 2c
$ python holdem_calc.py --input input_file --exact
Winning Percentages:
(Ad, As) : 0.791864061522
(Td, Jd) : 0.203947429896
Ties: 0.00418850858259
Player1 Histogram:
High Card : 0.0
Pair : 0.358631411245
Two Pair : 0.393626365412
Three of a Kind : 0.122320569245
Straight : 0.0115435109653
Flush : 0.0170863351368
Full House : 0.0875755706931
Four of a Kind : 0.00912221194367
Straight Flush : 6.71609714163e-05
Royal Flush : 2.68643885665e-05
Player2 Histogram:
High Card : 0.1535743653
Pair : 0.406777067624
Two Pair : 0.22637510629
Three of a Kind : 0.0449108335903
Straight : 0.0865465478093
Flush : 0.0543390659603
Full House : 0.0243624963791
Four of a Kind : 0.00141330044198
Straight Flush : 0.0017000485895
Royal Flush : 1.1680168942e-06
-----------------------------------
Winning Percentages:
(Ad, As) : 0.473737373737
(Td, Jd) : 0.526262626263
Ties: 0.0
Player1 Histogram:
High Card : 0.0
Pair : 0.49696969697
Two Pair : 0.377777777778
Three of a Kind : 0.0686868686869
Straight : 0.0
Flush : 0.0282828282828
Full House : 0.0272727272727
Four of a Kind : 0.0010101010101
Straight Flush : 0.0
Royal Flush : 0.0
Player2 Histogram:
High Card : 0.121212121212
Pair : 0.256565656566
Two Pair : 0.0787878787879
Three of a Kind : 0.0131313131313
Straight : 0.20303030303
Flush : 0.239393939394
Full House : 0.0
Four of a Kind : 0.0
Straight Flush : 0.0878787878788
Royal Flush : 0.0
-----------------------------------
Time elapsed(seconds): 16.41842103
未知孔卡:
计算一手牌在随机一对洞牌中获胜的可能性。只能将一组孔卡指定为“未知”。 注意:如果没有指定社区卡,使用未知孔卡执行计算会花费很长时间。在
$ python holdem_calc.py As Ks ? ? -b Ac 2h 6c
Winning Percentages:
(As, Ks) : 0.858660611667
(?, ?) : 0.135034900345
Ties: 0.00630448798811
Player1 Histogram:
High Card : 0.0
Pair : 0.532839962997
Two Pair : 0.374653098982
Three of a Kind : 0.0666049953747
Straight : 0.0
Flush : 0.0
Full House : 0.0249768732655
Four of a Kind : 0.000925069380204
Straight Flush : 0.0
Royal Flush : 0.0
Player2 Histogram:
High Card : 0.241033835113
Pair : 0.470249208085
Two Pair : 0.185989403751
Three of a Kind : 0.0336052476663
Straight : 0.0185462394528
Flush : 0.0378829927396
Full House : 0.0121043926779
Four of a Kind : 0.000543828665938
Straight Flush : 3.9245367645e-05
Royal Flush : 5.60648109214e-06
Time elapsed(seconds): 10.9187510014
多进程计算器3>
使用相同的命令行选项,但使用多核处理器来提高计算速度。 Windows users:由于Windows中的进程分叉机制,并行的\u holdem_calc可能比预期的慢。在
$ python parallel_holdem_calc.py As Ah Td Jd --exact
Winning Percentages:
(As, Ah) : 0.781151594577
(Td, Jd) : 0.215486268793
Ties: 0.00336213662994
Player1 Histogram:
High Card : 0.0
Pair : 0.355117432419
Two Pair : 0.391827619395
Three of a Kind : 0.122154710846
Straight : 0.0114418934955
Flush : 0.022642007494
Full House : 0.0875755706931
Four of a Kind : 0.00912221194367
Straight Flush : 6.65769629692e-05
Royal Flush : 5.19767517917e-05
Player2 Histogram:
High Card : 0.148343401639
Pair : 0.398811192405
Two Pair : 0.224704842131
Three of a Kind : 0.0446024771302
Straight : 0.0845083583289
Flush : 0.071000826956
Full House : 0.0243624963791
Four of a Kind : 0.00141330044198
Straight Flush : 0.00167435221783
Royal Flush : 0.000578752371074
Time elapsed(seconds): 11.5955700874
库调用:
如果要将Holdem计算器用作库,可以导入Holdem_calc或parallel_Holdem_calc并调用calculate()。calculate()的参数顺序如下:
- 董事会:这些是提供给计算的社区卡。这是一个字符串列表的形式,每个字符串代表一张卡片。如果不想指定社区卡,可以将board设置为None。示例:[“As”,“Ks”,“Jd”]
- 精确:这是一个布尔值,如果需要精确的计算,则为真;如果需要蒙特卡罗模拟,则为假。在
- 模拟次数:这是蒙特卡罗模拟中运行的迭代次数。请注意,如果“精确”设置为True,则忽略此参数。此数字必须为正,即使“精确”设置为“真”。
- 输入文件:希望Holdem计算器从中读取的输入文件的名称。如果不想从文件中读取,请将其标记为“无”。如果设置了输入文件,库调用将不会返回任何内容。
- 洞牌:这是每个玩家的洞牌。这是一个字符串列表的形式,每个字符串代表一张卡片。示例:[“As”,“Ks”,“Jd”,“Td”]
- Verbose:如果希望Holdem计算器打印结果,这是一个布尔值。在
调用calculate()返回浮点值列表。列表中的第一个元素对应于发生平局的概率。之后的每一个元素对应于用户提供的一张孔牌中的一张获胜的概率。这些概率是按照你列出它们的顺序发生的。在
$ cat example.py
import holdem_calc
import parallel_holdem_calc
print holdem_calc.calculate(["As", "Ks", "Jd"], True, 1, None, ["8s", "7s", "Qc", "Th"], False)
print parallel_holdem_calc.calculate(None, True, 1, None, ["8s", "7s", "Ad", "Ac"], False)
$ python example.py
[0.00404040404040404, 0.36363636363636365, 0.6323232323232323]
[0.0029375624889038396, 0.2287397564918379, 0.7683226810192583]
版权所有
版权所有(c)2013 Kevin Tseng。有关详细信息,请参见LICENSE。在
- 项目
标签: