PokerOddsCalc — это простой инструмент для оценки покерных комбинаций, который может моделировать варианты покера Техасский Холдем или Омаха. Большинство калькуляторов шансов в покере, написанных на Python, в настоящее время либо используют хеш-таблицу для хранения информации о картах в виде битов для повышения производительности, либо используют строгий ООП-дизайн, который жертвует производительностью. Целью разработки этого проекта является достижение относительно высокой эффективности моделирования без использования хеш-таблицы.
Посетите demo.ipynb , чтобы просмотреть все функции, которые поддерживает этот инструмент, или продолжите ниже, чтобы увидеть несколько кратких примеров.
установить с github
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
Чтобы обрабатывать данные на высокой скорости, вся информация о карте преобразуется в массивы numpy для повышения скорости.
Ввод карты осуществляется в формате числа: 23456789TJQKA, за которым следует масть: dcsh.
Для ранжирования карт мы используем шестнадцатеричную систему, чтобы присвоить карте силу от наиболее значимой карты до наименее значимой. В покере существует 7462 различных комбинации, поэтому мы создали алгоритм, который преобразует руку в целочисленное значение.
Во-первых, мы определяем, является ли пятикарточная комбинация одномастной/стрит. Это позволяет быстро определить тип нескольких рук.
Затем мы работаем с числовыми значениями карт, где от 2 до А представлены целыми числами от 2 до 14.
Мы сортируем карты, чтобы быстро определить тип карты.
Первый шаг
Второй шаг
Третий шаг
Заключение
Импортировать игру
from PokerOddsCalc import HoldemTable , OmahaTable
Создайте игру, укажите количество игроков и тип колоды (полная или короткая колода).
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
Раздавайте карты случайным образом, вызывая функцию next_round() на любом этапе игры, или назначайте вручную.
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
Смоделируйте, чтобы сгенерировать результат, укажите количество сценариев и тип расчета шансов (более подробную информацию см. в demo.ipynb ).
ht . simulate ()
#
{ 'Player 1 Win' : 50.31 ,
'Player 1 Tie' : 3.84 ,
'Player 2 Win' : 12.09 ,
'Player 2 Tie' : 0.41 ,
'Player 3 Win' : 11.4 ,
'Player 3 Tie' : 3.84 ,
'Player 4 Win' : 11.05 ,
'Player 4 Tie' : 0.41 ,
'Player 5 Win' : 11.31 ,
'Player 5 Tie' : 0.41 }
Просмотр текущей таблицы, текущей раздачи или текущего результата (если игра завершена)
ht . view_table ()
ht . view_hand ()
ht . view_result ()