在没有蒙特卡洛/详尽枚举的情况下获得德州扑克的胜率

时间:2012-05-30 18:04:07

标签: theory poker

抱歉,我刚刚开始这个项目并且没有任何想法或代码,我提出的理论问题多于编程问题。

似乎每个谷歌搜索都提供相同的回复,很难找到这个问题的答案:

有没有办法计算德州扑克的赢率百分比(与他们在黑暗或其他电视转播扑克赛事后的扑克方式相同),而不使用monte carlo /详尽的枚举方法。假设所有牌都面朝上,我们知道牌组中的每张牌。

其他论坛上的每个回复似乎都是“使用pokerstove”或类似的东西,我正在寻找编写代码的理论。

感谢。

2 个答案:

答案 0 :(得分:0)

答案是否定的。

您无法计算扑克股票的封闭形式计算。使用组合学,您可以识别和解决许多子问题,从而加快计算速度。

例如,如果你正考虑所有五张牌,那么就有52只选择5 = 2,598,960手。但是知道套装是等价的并且使用组合方法(分析或计算),你可以根据每个等价类别中不同指针的数量,将所有手的空间减少到134,459个等级。

还有各种方法可以根据您的应用量身定制详尽的评估方法。如果需要重复执行某些评估子集,可以使用针对特定需求的缓存或预先计算的查找表。

答案 1 :(得分:0)

  

有没有办法计算德州扑克的胜率   (就像他们在黑暗或其他电视转播扑克后对扑克一样   没有使用蒙特卡罗/穷举的枚举方法。

在特定情况下,有可能......

你可以使用一个完美的翻牌翻牌前两个玩家单挑翻牌前对决:注意“典型”169 vs 169近似值不够好(比如Jh Th vs 9h 8h并不是真的“JTs vs 98s “:我的意思是,这将是一个非常接近的事情。”

除此之外,如果你有一个很多的内存,并且你可以忍受巨大的缓存未命中,那么技术上可以 预先计算巨大的查找表(比如在服务器端)并为其他情况进行查找(例如翻牌前每个可能的三名球员全押比赛),但你真的需要一个很多的记忆:)

请注意,翻牌圈和翻牌圈的“完整枚举”不是问题:在翻牌圈只有2张牌,所以通常只有C(45,2)[两个玩家在翻牌圈全押,我们知道2 * 2个招牌+ 3个社区卡 - 因此留下990个可能性]或C(43个)[三个玩家在翻牌时全押,我们知道3 * 2个招牌+ 3个社区牌]。

因此,实际的评估者不会使用一种方法而是使用多种方法。例如:

  • 翻牌前全押(最快)的两名球员的查询表
  • 对于任意数量的玩家在翻牌圈或转牌时全押,因为它很小(最多990种可能性) - 非常快
  • monte-carlo或完整的enum三个玩家或更多全押翻牌前 - 令人难以置信的更慢

有趣的是,在最典型的情况下,你会得到非常非常快的结果:大多数实际的全押都涉及两个玩家,而不是三个或更多玩家。

因此,您要么在“1对1翻牌前”查找表中查找完整的C(45,2)或C(46,1)完整枚举(其中,两种情况,都非常快。)

这真的只是需要时间的“三个或更多全场翻牌前”的情况。