【问题标题】:Poker Hand Evaluation with Jokers用 Jokers 进行扑克手评估
【发布时间】:2013-05-02 07:15:45
【问题描述】:

我为我正在开发的德州扑克游戏编写了一个朴素的扑克评估算法,我想知道在这些牌中评估小丑的最佳方法是什么。

我的一个想法是用套牌中的每张牌替换小丑,并反复重新评估手牌以找到可能的最佳手牌。然而,最多可以有 3 个小丑,这似乎不是最有效的方法吗?想法?

附: - 是的,我知道有几种更快的扑克手牌评估器可用,但这些牌略有不同,我一直无法找到适合我需要的牌(Jokers 等),因此从头开始写了一张。

【问题讨论】:

  • 我会编写代码,从最好到最差(直接同花顺到最高牌)尝试每种手牌类型,询问“我可以和小丑一起做这个吗?”例如每种手型都需要特殊代码,例如“我可以用三个百搭牌和任何东西,两个百搭牌和一对/更好,三张和一个百搭牌或两对和一个百搭牌组成一个完整的房子”
  • 我尝试开发这种逻辑,但可能性太大,尤其是 3 个小丑。
  • 您不必考虑“我可以使用三个小丑的所有方法”,而是更多地考虑“如果我有 X 个小丑,新的最低要求是多少能够完成手型?例如如果你所有的非小丑都是同花色,你可以做同花,如果 1)你有五张按顺序排列的牌 2)你有四张牌和一个小丑,并且最高和最低的牌是 4 或 5 差 3)你有三张牌和两个小丑,最高和最低的牌相差 3-5 5) 你有两张牌和三个小丑,牌相差 2-5...
  • +1 因为标题押韵!

标签: java poker


【解决方案1】:

这种比较上下差异的逻辑是行不通的。

假设你有 9 - J - J - K - Joker。这将产生 4 的差异,但不是顺子。

FIX:非小丑号码也必须不同。

【讨论】:

    【解决方案2】:

    请注意,尝试七张牌中的五张牌的每一种组合意味着尝试 21 种组合,这还不错。

    对于每手牌,#: 其中 # 是一个数字,表示手牌中的 # 个小丑。

    另外请注意,一旦你找到了一手牌,你就不必在七张牌中寻找比其他组合更差的牌 - 你可以提前停止。

    如果满足以下条件,您可以形成同花顺:

    0:所有牌的花色相同,最高和最低的牌相差4(这意味着其他三张牌必须在这两者之间)

    1:所有非小丑花色相同,最高和最低的牌相差 4 或 3。(这意味着其他牌填补顺子,有一个缺口 - 小丑填补)

    2:所有非小丑的花色相同,最高和最低的牌相差4、3或2。

    3:所有非小丑的花色相同,最高和最低的牌相差4、3、2或1。

    如果满足以下条件,您可以形成四合一:

    0:你有四张相同等级的牌。

    1:你有三张相同等级的牌。

    2:你有两张相同等级的牌。

    3:你有一个四类 - 停止评估。

    如果满足以下条件,您可以组成一个完整的房子:

    0:你有一个三和一对。

    1:你有一个三对,或者你有两对。

    2:你有一个三,或者你有一对。

    如果满足以下条件,您可以形成同花:

    所有非小丑都是一样的花色。

    如果满足以下条件,您可以形成顺子:

    查看直接冲洗逻辑,但取消冲洗要求。

    如果满足以下条件,您可以形成三合一:

    0:你有三张相同等级的牌。

    1:你有两张相同等级的牌。

    2:你有一个三样 - 停止评估。

    如果满足以下条件,您可以形成两对:

    0:你有两张相同等级的牌,用于两个不同等级。

    1:你有两张相同等级的牌(一对)。

    如果满足以下条件,您可以组成一对:

    0:你有两张相同等级的牌。

    1:你有一对 - 停止评估。

    你的牌最高 - 停止评估

    【讨论】:

    • 感谢您的详细解释
    • 这个逻辑虽然是针对 5 张牌的,但对于 Hold 'Em 来说变得更加复杂。我将尝试处理 Hold 'Em 的逻辑并发布更新
    • @Prat 您可以这样做,或者您可以迭代所有 5C7 = 21 种可能的七张牌组合。只有当这明显很慢时,我才会努力进一步优化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多