计算每个扑克起手牌的唯一索引

时间:2010-03-15 23:39:29

标签: java indexing combinatorics lookup-tables poker

由于牌组中有52张牌,我们知道有52 choose 2 = 1326个明显的对决,但是在翻牌前扑克中,这可以被分成169个不同的牌,例如AK offsuit和AK,因为它是否是一个心灵K心或者铲子K铲起它在翻牌前没什么区别。我的问题是,有一个很好的数学属性,我可以唯一索引这169个手中的每一个(最好从0到168)。我正在尝试创建一个查找表作为double[][] = new double [169][169]但无法将诸如AK(一个Ace和同一套装的王)之类的手部表示更改为此数组中的唯一索引。

2 个答案:

答案 0 :(得分:2)

  1. 如果卡片属于同一套牌,请对两张卡片进行分类,以使下面的卡片首先出现。如果它们有不同的套装,请对两张卡片进行分类,使得较低的卡片最后一张。当卡片具有相同级别和适合时,将保留一个特殊情况。
  2. 为每个等级指定一个0到12之间的值,并使用base-13计数系统。该系统中的最高值是12 * 13 + 12 = 168.
  3. 最后,对于两张牌同等级且适合的情况,取等级值并加上169。这些案件将在169-181范围内。
  4. 也许我的数学错了,但我想出了182对不同的牌。我不是游戏专家,所以也许我错过了什么。

答案 1 :(得分:0)

可以找到现成的Objective-C(和Java)德州扑克7和5卡评估员的示例here并进一步解释here。它“添加”手来生成一个足以表征手牌以确定排名的指数。

所有反馈都欢迎来自其中的电子邮件地址。