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()的参数顺序如下:

  1. 董事会:这些是提供给计算的社区卡。这是一个字符串列表的形式,每个字符串代表一张卡片。如果不想指定社区卡,可以将board设置为None。示例:[“As”,“Ks”,“Jd”]
  2. 精确:这是一个布尔值,如果需要精确的计算,则为真;如果需要蒙特卡罗模拟,则为假。在
  3. 模拟次数:这是蒙特卡罗模拟中运行的迭代次数。请注意,如果“精确”设置为True,则忽略此参数。此数字必须为正,即使“精确”设置为“真”。
  4. 输入文件:希望Holdem计算器从中读取的输入文件的名称。如果不想从文件中读取,请将其标记为“无”。如果设置了输入文件,库调用将不会返回任何内容。
  5. 洞牌:这是每个玩家的洞牌。这是一个字符串列表的形式,每个字符串代表一张卡片。示例:[“As”,“Ks”,“Jd”,“Td”]
  6. 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。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用泛型在Java中生成通用方法?   java从ISO/IEC 197944图像数据文件创建图像   java实现RSA的代码有什么问题?   javascript如何将JsonArray从解析云检索到安卓?   在vaadin中上传和下载java文件   java ListView自定义适配器OnClick启动URL链接   java在一个hbox中提供两个元素的独立对齐   java用类名创建类   java从unix命令行运行jar文件   java FTP下载在文件#146处停止