我如何处理太多的排列?

时间:2017-11-18 18:53:51

标签: performance artificial-intelligence permutation

我的问题是:当一个完整的低谷有太多的排列时,我如何计算获胜的机会。

我正在开发德州扑克扑克应用程序。基本功能是概率计算器。甲板由52张牌组成,每位牌手持有两张牌,桌面上放置5张牌,然后对获胜者进行评估。因此,如果桌面上有4张牌,则最后一张牌有44种可能的结果。当桌子上有3张牌时,有45 * 44种排列。但如果桌子上没有卡片,我必须考虑48 * 47 * 46 * 45 * 44 = 205.476.480的排列。如果我设法实现"命令并不重要,那么我将获得1.712.304排列,这对于我的CakePHP Web服务器来说仍然是大约15倍。

1 个答案:

答案 0 :(得分:0)

关键是只考虑相关的卡片。 而不是创建和评估每个可能的手的组合,只考虑那些实际上改善你的手的组合。

一个例子(未完成)

手是心脏的5 +黑桃的8。以下卡片组合改进了这一手:

  • 8张以上的任何卡
  • 一,二或三个5s
  • 一,二或三个8s
  • 上述
  • 的组合
  • 任何出现两次或三次或四次的值
  • 5个十字架或5个钻石
  • 4颗心或4颗黑桃
  • 6,7,9
  • 4,6,7
  • 4张或5张卡的类似组合
  • 6,7,8,9的心
  • 与心和黑桃类似的组合

对于每一个,你可以快速计算概率。

在早期,您可以通过忽略需要超过n个匹配卡的组合来加快计算速度,因为它们几乎没有效果(每个人在开始时都有机会获得皇家同花顺,但大多数人永远不会得到一个)。

您甚至可以预先计算起手的值。这些只是大约13 * 13的值(每张卡有13个选项,适合与否的时间为2,因为顺序无关,除以2)。