抱歉,我刚刚开始这个项目并且没有任何想法或代码,我提出的理论问题多于编程问题。
似乎每个谷歌搜索都提供相同的回复,很难找到这个问题的答案:
有没有办法计算德州扑克的赢率百分比(与他们在黑暗或其他电视转播扑克赛事后的扑克方式相同),而不使用monte carlo /详尽的枚举方法。假设所有牌都面朝上,我们知道牌组中的每张牌。
其他论坛上的每个回复似乎都是“使用pokerstove”或类似的东西,我正在寻找编写代码的理论。
感谢。
答案 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个社区牌]。
因此,实际的评估者不会使用一种方法而是使用多种方法。例如:
有趣的是,在最典型的情况下,你会得到非常非常快的结果:大多数实际的全押都涉及两个玩家,而不是三个或更多玩家。
因此,您要么在“1对1翻牌前”查找表或中查找完整的C(45,2)或C(46,1)完整枚举(其中,两种情况,都非常快。)
这真的只是需要时间的“三个或更多全场翻牌前”的情况。