Java 当程序知道所有手牌时,如何计算扑克手牌的百分比?

Java 当程序知道所有手牌时,如何计算扑克手牌的百分比?,java,algorithm,Java,Algorithm,我想计算一下你在我的java程序中看扑克时在电视上看到的百分比。这个问题与其他许多问题之间的区别(如果不清楚的话)是,程序确实知道所有玩家的手,因此可以确定准确的百分比。有许多网站,例如: 您可以输入玩家卡,它将为您提供百分比。我想知道我的程序中是否有任何针对这个或任何java API的现成算法。我知道我的问题可能有点不切实际。所以,如果没有算法或API,也许有人知道它是如何计算的,这样我就可以尝试构建自己的算法了 如果仍然存在混淆: 如果有3名球员,他们的手是 玩家1:作为kh 玩家2:2d3

我想计算一下你在我的java程序中看扑克时在电视上看到的百分比。这个问题与其他许多问题之间的区别(如果不清楚的话)是,程序确实知道所有玩家的手,因此可以确定准确的百分比。有许多网站,例如: 您可以输入玩家卡,它将为您提供百分比。我想知道我的程序中是否有任何针对这个或任何java API的现成算法。我知道我的问题可能有点不切实际。所以,如果没有算法或API,也许有人知道它是如何计算的,这样我就可以尝试构建自己的算法了

如果仍然存在混淆: 如果有3名球员,他们的手是

玩家1:作为kh

玩家2:2d3c

玩家3:啊

我想知道每名球员必须赢得赛前、赛前和赛前比赛的百分比
提前谢谢。

效率很低,但是你可以循环所有剩下的牌,看看每个玩家在每个场景中赢了多少。通过消除可能性(即,如果西装没有排好,则不会出现冲水现象)可以实现各种加速。

这些数字比您预期的要小得多,因此暴力强迫是完全可能的。诀窍是尽可能地忽略卡片的输出顺序。例如,如果你在考虑跳投前的概率,你只关心河边的整个棋盘,而不关心具体的跳投、转弯和河流

如果有3手牌(6张牌),牌组中还有46张牌。这意味着河边有1370754个不同的木板。列举所有棋盘,并计算每只手在这条河上获胜的次数。(或者更准确地说,计算每只手的权益,因为有时2或3只手会绑在河上)。这会给你预测概率,这是最昂贵的计算

考虑到失败,到最后只有choose(43,2)=903个板是可能的,因此失败概率(你称之为预回合)非常便宜,可以列举所有的失败并计算三手牌的平均权益

考虑到翻牌和转身,只有42张可能的河牌。因此,在拐弯处(河前),计算手部股票更便宜


理想情况下,你需要一个快速的评估员,但如果你不想自己写的话,这应该很容易在网上找到。

你可以计算所有可能的结果,你至少需要两个已知的手(=4张卡)来计算一些东西,所以ncr(48,5)=170万个不同的结果。否则,你需要根据出局情况进行计算,例如阿哈德获胜,因此阿斯克需要QJT,2个国王,4个黑桃才能获胜,或者四分球,5个板球才能平局。但这很困难,因为QJT只有在最多3张牌是菱形和其他限制的情况下才会获胜。这个JavaGithub项目似乎在尝试按照您的要求做——至少要检查代码以了解方法。安迪——我确实看到了。你知道在我的项目中是否有使用它的方法吗。我不明白如何使用我的项目中给出的命令。克隆它并使用核心类-无需使用
控制台
(主)类-例如
手动排序
类(假设它有效)是有用的。最终,性能将是这里的一个问题。见@PaulHankin的答案。