2017-04-18 1 views
0

손의 힘을 계산하는 방법을 찾으려고합니다. 169 개의 ​​시작 손 중 얼마나 많은 수의 고유 손이 완료 또는 불완전한 대결에서 승리 할 확률이 더 큽니까? 보드 (holdem).포커의 손 강도를주는 알고리즘

나는 이것을 몇 가지 방법으로 시도해 보았지만 다소 성공적 이었지만 본질적으로 모든 가능한 손 콤보에 대해 분기하고 집계 결과를 비교할 때 프로그램을 실행하는 데 오랜 시간이 걸린다. 모든 시나리오에서 영웅보다 손이 얼마나 많은 지 찾아야합니다. TLDR 그것은 대단히 비효율적이며 실행에 비현실적인 시간이 필요합니다.

그러나이 같은 도구가 훨씬 더 빠르게 계산하는 것처럼 보이는 http://www.cardplayer.com/poker-tools/odds-calculator/texas-holdem입니다. 위의 프로그램은 가능한 모든 향후 보드 조합에 대한 계산을 수행하는 것으로 보이므로 불완전 보드에 대한 더 나은 손을 제공 할 수 있습니다. 내 특정 프로그램의 경우, 주어진 시점에서 영웅보다 먼저 손을 찾으려하지만, 52 * 51 고유하지 않은 시작 손 각각에 대해 위의 프로그램을 실행해야하며 내 손을 찾을 수 있어야합니다. 나머지 중 하나와 좋은 핸드의 숫자가되면, 나는 unqique 시작 손 (예 : 8c7h 및 8h7c는 87o로 축소됩니다)을 줄여야합니다

그래서 내 질문은 어떤 도구가 있습니까/frameworks/references (Java에서 가능하면 좋음) 영웅의 손의 강도와 익명의 손의 강도를 계산하기 위해 거기에 완전한 보드 또는 불완전한 보드가 주어지며 실행하는 데 하루가 걸리지 않습니까? at Github 다른 언어 at rosettacode에 :

+0

Monte Carlo Simulation을 사용하면 임의의 손과 보드에 대해 수천 개의 게임을 효율적으로 재생할 수 있습니다. – maraca

답변

0

이 스레드는 많은 정보를 Stack Overflow Evaluation Algorithms

Code Projecta tutorial on an algorithm 자바 소스에서 또한

있습니다.

+0

나는 손의 힘을 상당히 빨리 알려주는 코드를 가지고있다. 병목이있는 곳이 아닙니다. 내가 겪고있는 문제는 영웅 앞에서 독특한 손의 수를 계산하는 것입니다. 가능한 모든 보드 조합을 위해 모든 손을 비교해야합니다. 그런 다음 그 결과를 비교 한 다음 고유 한 손으로 줄일 수 있습니다. –

+0

그래서이 질문은 다양한 손의 가능성을 찾고 있습니다. 즉, 임의의 손에 대해 5를 선택하고, 예를 들어 왕실 플러시에 대해 1을 선택하지만, 이미 본 모든 카드를받을 수 있습니까? –

+0

질문은 주어진 보드에서 영웅보다 몇 명의 독특한 손이 먼저 나오는지입니다. 고유 한 시작 손은 169 개이므로 함수는 본질적으로 int (반환 값 : 0-168) getHandsAhead (Hand heroHand, Board currBoard)이어야합니다. –

1

나는 사람의 포커 종류의 많은 아니지만, 당신도 당신을 도울 수있는 MIT, 보너스 infographic에서 poker theory에 전념하는 전체 과정에 대한 흥미로운 ThePokerBank 사이트를 찾을 수 있습니다.

이 문제를 해결하기 위해 취할 수있는 전략에는 Statiscal 분석에 대한 지식이 많이 포함되어 있습니다. 다른 포커 알고리즘이 조금 더 잘 작동하는 이유 중 하나는 일련의 for 루프 대신 벡터화 수학의 한 형태. 나는 octave/MatLab/R과 같은 언어가이 전략을 사용하여 대량 작업을 수행한다는 것을 알고 있습니다.

행운을 빌어 요!