计算获胜赔率 - 扑克机器人

时间:2015-12-23 11:22:44

标签: java memory-management poker

我正在尝试用java构建一个扑克机器人。我写了手评估课,我即将开始喂养神经网络,但我遇到了问题。每一步都需要每手牌的胜算:翻牌前,翻牌圈,转牌圈,河牌圈。

我的问题是,有52张牌,5张牌的组合是2,598,960。所以我需要为每个可能的牌存储2,598,960赔率。这个数字很大,这些只是我需要的河流。

所以我有两个选择:

  1. 找到每个可能的牌和每个可能的牌组的赔率,每次我开始我的应用程序加载它们并杀死我的记忆。
  2. 计算飞行中的几率并且缺乏处理能力。
  3. 有没有第三个更好的选择来处理这个问题?

2 个答案:

答案 0 :(得分:0)

第三个选项是使用磁盘...但我的第一选择是根据需要计算赔率。

为什么你需要计算5张牌的所有组合,很多这些牌的价值都相同,因为有4种套牌在牌之间有重复。

就个人而言,我会根据你的手牌数量和手牌数量来对你的牌进行排名。通过这个,您可以通过乘以活动牌数来计算赢得赌桌的概率。

答案 1 :(得分:0)

忽略颜色怎么样?从52个可能的值,您可以下降到13.您只剩下6175个选项。当然,颜色对于同花顺来说很重要 - 但是在这里,它几乎是二元的 - 所有的颜色是否相同?所以我们在12350(包括一些不可能的组合,实际上它是7462和其他组合一样,一个数字不止一次,所以颜色必须不同)。

如果订单很重要(例如开始手,翻转,翻牌,河牌或者如何调用),它会更多,但它仍然少于你的两百万。尝试简化你的问题,你会发现它们可以解决。