【问题标题】:Algorithm that gives hand strength in poker [closed]在扑克中赋予手牌力量的算法[关闭]
【发布时间】:2017-04-18 21:50:13
【问题描述】:

我正在尝试找到一种方法来计算一手牌的强度,特别是在完整​​或不完整的棋盘(德州扑克)的情况下,有多少独特的手(在 169 首起手牌中)在摊牌时获胜的机会更高。

我已经尝试了几种方法并且取得了一定的成功,但是我的程序运行需要大量的时间,因为我基本上要针对每一种可能的手牌组合进行分支,并比较汇总结果每个场景都找出有多少手比英雄的好。 TLDR 效率极低,而且运行时间不切实际。

但是,有像 http://www.cardplayer.com/poker-tools/odds-calculator/texas-holdem 这样的工具似乎可以更快地进行计算。上述程序似乎对所有可能的未来棋盘组合进行了计算,因此它可以为您提供不完整的棋盘更好的手。虽然,对于我的特定程序,我想在任何给定点找到英雄之前的手数,这需要我为每个 52*51 非唯一起始手运行上面的程序,并找到我的手排在其余的位置,一旦获得了更好的手牌数量,我将不得不将它们减少到唯一的起手牌(即 8c7h 和 8h7c 将减少到 87o)

所以我的问题是,是否有任何工具/框架/参考(最好在 Java 中)用于计算英雄牌与匿名牌的强度,给定任何完整或不完整的棋盘也不需要一天的时间?

【问题讨论】:

  • 使用蒙特卡洛模拟,只需有效地对抗随机手牌和棋盘,玩数千场比赛,这将花费不到一秒钟的时间。

标签: java algorithm poker


【解决方案1】:

我不太喜欢打扑克,但您可能会发现 ThePokerBank 网站很有趣,那么麻省理工学院 poker theory 专门提供的整个课程怎么样,infographic 的奖金也可以帮助您。

你可以采取不同的策略来尝试解决这个问题,所有这些策略都涉及到相当多的统计分析知识,我想说其他扑克算法工作得更好的原因之一是他们使用了向量化数学的形式,而不是一系列的 for 循环。我知道像octave/MatLab/R 这样的语言采用这种策略进行批量操作。

祝你好运,玩得开心!!

【讨论】:

    【解决方案2】:

    这个帖子有很多信息Stack Overflow Evaluation Algorithms

    也可以在Code Projecta tutorial on an algorithm 和Java 源:at Github 和不同语言的at rosettacode

    【讨论】:

    • 我的代码可以相当快地告诉我一手牌的强度。这不是瓶颈所在。我遇到的问题是计算英雄前面唯一手牌的数量,我必须比较所有可能的棋盘组合的所有手牌。然后比较这些结果,然后简化为独特的手。
    • 所以这个问题是在寻找各种手牌的概率,即 52 选择 5 表示任何手牌,4 选择 1 表示皇家同花顺,但可能给定所有已经看过的牌?
    • 问题是对于给定的棋盘,有多少独特的手领先于英雄。有 169 个独特的起手牌,所以函数本质上应该是 int(returns 0-168) getHandsAhead(Hand heroHand, Board currBoard)
    猜你喜欢
    • 2017-07-11
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多