0

由于一副牌中有 52 张牌,我们知道有52 choose 2 = 1326不同的对局,但是在翻牌前扑克中,这可以分为 169 种不同的手牌,例如 AK 非同花和 AK 同花,无论是 A 红桃 K 红桃 K 黑桃 A翻牌前的差异。我的问题是,是否有一个很好的数学属性,我可以在其中唯一地索引这 169 手牌中的每一手(最好从 0 到 168)。我正在尝试创建一个查找表,double[][] = new double [169][169]但无法将诸如 AK(同花色的 A 和 K)之类的手牌表示更改为该数组中的唯一索引。

4

2 回答 2

2
  1. 如果牌的花色相同,则将两张牌排序,以使较低的牌先出现。如果它们的花色不同,请将两张牌排序,使较低的牌排在最后。当牌的等级和花色相同时,将保留一个特殊情况。
  2. 为每个等级分配一个从 0 到 12 的值,并使用 base-13 计数系统。这个系统中的最大值是 12*13 + 12 = 168。
  3. 最后,对于两张牌的点数和花色相同的情况,取点数并加上 169。这些案例将在 169-181 范围内。

也许我的数学是错的,但我想出了 182 对不同的卡片。我不是游戏专家,所以也许我错过了一些东西。

于 2010-03-15T23:56:35.740 回答
0

是的。

可以在此处找到现成的 Objective-C(和 Java)德州扑克 7 张和 5 张牌评估器的示例,并在此处进一步解释。它将手牌“加起来”以生成足以表征手牌以确定排名的索引。

欢迎在其中找到的电子邮件地址提供所有反馈。

于 2011-04-12T23:28:28.530 回答