IList< T> интерфейс, таким образом, можно наследовать другой класс и все еще реализовать IList< T> при наследовании List< T> предотвращает Вас, чтобы сделать так.
, Например, если существует класс A и Ваш класс B, наследовал его тогда, Вы не можете использовать List< T>
class A : B, IList<T> { ... }
Взгляните на Как я создал серию рабочих покерных ботов (части 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ), в котором есть отличная информация для начала работы с покерными ботами.
В частности, обратите внимание на Часть 8 , в которой подробно рассказывается, как оценивать ценность руки. Что вам нужно сделать, так это статистически оценить карты в руке и оттуда определить, какие карты имеют наибольшую вероятность получить выигрышную руку. Затем вы можете сбросить ненужные карты.
Как насчет того, чтобы связаться с Университетом Альберты? Группа исследований компьютерного покера ?
Если вы хотите просто создать программу для игры в покер, то приведенные выше предложения будут вам полезны. Если вы хотите создать систему, которая обучается игре в покер, вам необходимо использовать методы машинного обучения / индуктивного обучения, такие как нейронные сети, деревья решений, генетические алгоритмы. Самуэль написал раннюю программу игры в шашки, которая научилась улучшать ее производительность.
http://en.wikipedia.org/wiki/Arthur_Samuel
Также есть сайт по машинному обучению и играм:
Вам нужно изучить Дизайн Экспертной системы . И примените его к своей проблемной области.
Если это кажется подавляющим, начните с малого. Создайте элементарную базу знаний правил, которая заставит вашего покерного бота с жадностью искать пары (и 3 или 4 пары). Когда это хорошо, добавьте правила, чтобы попытаться построить стриты, и правила, когда отдавать предпочтение стрит-билдингу, а не поиску пар, а затем, когда это хорошо работает, добавьте флеши. Ключом к процессу является постоянное небольшое приращение.
Computer Gamesmanship Дэвида Леви
охватывает стад и дро. Вы поймете, насколько это сложно, когда закончите читать.
Обратите внимание, что книге более 25 лет, но это хорошее начало.
Вы хотите изучать теорию игр и интеллектуальный анализ данных. Лучшие программы используют большое теоретико-игровое моделирование для определения допусков для экспертной системы, которая используется для рандомизации игры таким образом, чтобы она допускала как можно меньше систематических ошибок. Если вы достаточно хорошо проведете поиск в Интернете, вы найдете полные реализации некоторых из этих типов решений, но им часто не хватает кода, который их генерировал. Обратной стороной простого принятия одного из этих решений является то, что они не в полной мере используют ошибки оппонентов, и именно в этом направлении ведется большая часть сегодняшних исследований по этой теме.
Существует несколько способов выработки теории игр. однако решения, использующие практически все мыслимые алгоритмы ИИ.
Проверить покерный оценщик. http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup Используйте анализ Монте-Карло, чтобы определить, какие карты выгружать в рудник, чтобы максимизировать ожидания.