Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何计算得州获胜概率的软件持有';em或奥马哈牌对8个随机对手牌有效?_Algorithm_Approximation - Fatal编程技术网

Algorithm 如何计算得州获胜概率的软件持有';em或奥马哈牌对8个随机对手牌有效?

Algorithm 如何计算得州获胜概率的软件持有';em或奥马哈牌对8个随机对手牌有效?,algorithm,approximation,Algorithm,Approximation,所以有德州Hold'em电脑游戏,你最多可以玩8个对手,假设对手的手都是随机的,其中一些电脑游戏会告诉你获胜的概率。如果有人不知道,在Heldm中,每个玩家处理2张私人卡,然后最终在中间处理5张社区卡(第一个3个,然后1个,然后1个),并且赢家是可以做出最好的5张牌手的玩家,他们可以使用他们的2张私人卡和5张社区卡的任意组合。在奥马哈,每位玩家发4张私人卡,还有5张社区卡,赢家是能够使用2张私人卡和3张社区卡打出最好的5张扑克牌的玩家 因此,在Hold'em中,对于任何给定玩家的私人牌,有超过1

所以有德州Hold'em电脑游戏,你最多可以玩8个对手,假设对手的手都是随机的,其中一些电脑游戏会告诉你获胜的概率。如果有人不知道,在Heldm中,每个玩家处理2张私人卡,然后最终在中间处理5张社区卡(第一个3个,然后1个,然后1个),并且赢家是可以做出最好的5张牌手的玩家,他们可以使用他们的2张私人卡和5张社区卡的任意组合。在奥马哈,每位玩家发4张私人卡,还有5张社区卡,赢家是能够使用2张私人卡和3张社区卡打出最好的5张扑克牌的玩家


因此,在Hold'em中,对于任何给定玩家的私人牌,有超过10^24种方式可以处理8个对手的私人牌和5张社区牌。那么,假设你的8个对手的手是随机的,他们如何计算/估计你一开始获胜的概率呢?在奥马哈,情况更糟,尽管我从未见过一款奥马哈电脑游戏能让你在8个随机对手的手上获得胜算。但无论如何,有什么编程技巧可以比暴力更快地完成这些获胜概率计算(或者说,在小数点后3或4位内正确)?我希望有人能在这里回答谁写了这样一个程序之前,运行速度足够快,所以我在这里问为什么。我希望答案不涉及随机抽样估计,因为总有一个很小的机会,这可能是远远不够的。

正如您确定的那样,预期获胜率是一个难以解决的大总和,必须进行近似计算。标准方法是使用蒙特卡罗方法,该方法涉及反复模拟各种手牌,并采用经验平均值:#赢/#游戏

有趣的是,这种近似方法的(MSE)误差与维度(组合数)无关,具体来说,如果你赢了,让X=1,如果你输了,让0,MSE=var(X)/N=p*(1-p)/N,其中p=Prob(X=1)(未知),N是样本数

有许多不同的蒙特卡罗技术可以改善普通抽样方法的方差,例如重要性抽样、普通随机数、Rao Blackwellization、控制变量和分层抽样等等

编辑:刚刚看到你正在寻找一种非随机近似方法,我怀疑你在确定性近似方法方面会有多少运气,我知道目前计算机扑克研究的最新技术使用蒙特卡罗方法来计算这些概率,尽管有一些方差减少技巧


关于“因为总是有一个很小的机会,这可能是遥远的”,你总是可以通过霍夫丁不等式得到错误率的高概率界。

我会使用预先计算的赔率表,而不是即时计算。列出这些的表非常容易找到,并且已经存在了相当长的一段时间,因此它们是经过验证的工具。将您的孔卡+社区卡与预先计算的表中列出的百分比进行匹配,并立即将值返回给您,从而跳过即时计算时间,这将非常简单

一副牌中只有52张牌(经典),因此,如果你只是提前找到所有可能的解决方案,那么阅读这些牌的速度要快得多,而不是重新计算每一手牌的赔率

这里有一个指向不完整赔率表的链接:


我会像破解密码一样思考。使用常用密码列表来减少计算时间,而不是单独强制每个字符。这种情况的不同之处在于,你提前知道所有可能的组合。

但是,如果需要精确的概率,即使是预计算似乎也需要一些技巧,因为对于8个随机对手的手,如果不考虑对手的顺序,对手的手也有10^21种可能性,如果中间的5张牌还没有发出去,它会上升到10^24个可能性。在奥马哈,8名对手的可能对手手数大约为10-20个数量级,甚至更高。如果抽样是当前的最新技术,那么我猜这就是它的方式。令人遗憾的是,仍然有一个非常小的机会,一些计算出的获胜概率估计是远远不够的。这有(52选2)个机会发生。谢谢您的回复。@user2566092估计值与您的相差不大——可以上界吗,如果我们有经验平均值$m=1/n\sum\u i X\u i$,我们从Hoeffding的IE得到Pr(| m-E[m]>t)我同意您所说的一切,但事实仍然是,如果你在抽样中非常非常不走运,你可以估计获胜概率为1.0,即使它实际上更像是0.5。我知道我说的是,如果样本量足够大的话,由于宇宙辐射而产生计算误差的可能性要小得多。但是,机会依然存在。使用抽样法无法得出大偏差的概率为0。实际上只有169个明显不同的起始手(不是52个选择2)。As5c获胜的几率与As5h等的几率相同。因此,有13c2=78对不同的牌,可以适合或不适合(156种可能性)和13对口袋牌。计算每一张非常可靠的权益表所需的时间并不多。