PokerOddsCalc 는 텍사스 홀덤이나 오마하 포커 변형을 시뮬레이션할 수 있는 간단한 포커 핸드 평가기입니다. Python으로 작성된 대부분의 순수 포커 확률 계산기는 현재 해시 테이블을 사용하여 카드 정보를 비트로 저장하여 성능을 향상시키거나 강력한 OOP 설계를 사용하여 성능을 희생합니다. 이 프로젝트의 개발 목표 는 해시테이블을 사용하지 않고 상대적으로 높은 시뮬레이션 효율성을 달성하는 것입니다.
데모.ipynb를 확인하여 도구가 지원하는 모든 기능을 살펴보거나 아래에서 몇 가지 간단한 예를 계속 확인하세요.
github에서 설치
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
빠른 속도로 데이터를 처리하기 위해 모든 카드 정보를 numpy 배열로 변환하여 속도를 향상시킵니다.
카드 입력은 숫자: 23456789TJQKA 다음에 정장: dcsh 형식으로 이루어집니다.
카드 순위를 매기기 위해 우리는 16진수 시스템을 사용하여 가장 중요한 카드부터 가장 덜 중요한 카드까지 카드에 강도를 할당합니다. 7462개의 서로 다른 포커 핸드가 있으므로 우리는 핸드를 정수 값으로 변환하는 알고리즘을 만들었습니다.
먼저, 5개의 카드 조합이 적합/직선인지 결정합니다. 이를 통해 여러 손의 유형을 빠르게 식별할 수 있습니다.
그런 다음 2부터 A까지가 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
결과 생성을 위한 시뮬레이션, 시나리오 수 및 확률 계산 유형 지정(자세한 내용은 데모.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 ()