Вычисление уникального индекса для каждой стартовой руки в покере - PullRequest
0 голосов
/ 16 марта 2010

Так как в колоде 52 карты, мы знаем, что есть 52 choose 2 = 1326 различных поединков, однако в покер на префлопе это можно разбить на 169 различных рук, таких как AK offsuit и AK, в зависимости от того, является ли это A hearts K hearts или A Спейд К пики не имеет значения на префлопе. Мой вопрос заключается в том, есть ли хорошее математическое свойство, по которому я могу однозначно индексировать каждую из этих 169 раздач (желательно от 0 до 168). Я пытаюсь создать справочную таблицу как double[][] = new double [169][169], но не могу изменить представление руки, такое как АК (туз и король одной масти), на уникальный индекс в этом массиве.

Ответы [ 2 ]

2 голосов
/ 16 марта 2010
  1. Если карточки одной масти, рассортируйте две карточки так, чтобы младшая карточка была первой.Если они разной масти, рассортируйте две карты так, чтобы нижняя была последней.Особый случай будет зарезервирован для карт одного ранга и масти.
  2. Назначьте каждому рангу значение от 0 до 12 и используйте систему подсчета Base-13.Наибольшее значение в этой системе составляет 12 * 13 + 12 = 168.
  3. Наконец, для случаев, когда обе карты имеют одинаковый ранг и масть, возьмите значение ранга и добавьте к нему 169Эти случаи будут в диапазоне 169-181.

Возможно, моя математика неверна, но я придумаю 182 разных пары карт.Я не эксперт в игре, так что, может быть, я что-то упустил.

0 голосов
/ 13 апреля 2011

Да.

Пример готового Objective-C (и Java) Texas Hold'em с 7- и 5-карточным оценщиком можно найти здесь и более подробно объяснить здесь .Он «складывает» руки, чтобы сгенерировать индекс, который достаточно характеризует руку для определения ранга.

Все отзывы приветствуются по адресу электронной почты, найденному в нем.

...