잘 두는 사람에게서 찾은 세 가지 습관을 hard 봇에 넣었습니다. 바꾸기 전과 후의 판단 흐름을 그림으로 나란히 놓고, 새 봇이 구버전 봇들 사이에서 얼마나 세졌는지, 그리고 아직 말할 수 없는 것이 무엇인지를 코드 없이 정리합니다.
Posts for: #Simulation
달무티 CPU 플레이어 만들기 Part 7: 잘 두는 사람은 봇과 어디서 다르게 두는가
hard 봇을 열 판 중 여섯 판 이긴 사용자의 결정 6,746개를, 같은 순간 봇이 냈을 수와 하나씩 비교했습니다. 대부분은 같았습니다. 갈라진 자리는 셋이었습니다. 강한 한두 장으로 리드를 지키고, 초반에 최상위 카드를 아끼고, 받을 때 딱 이길 만큼만 씁니다.
달무티 CPU 플레이어 만들기 Part 6: 사람이 열 판 중 여섯 판을 이기는 hard 봇
hard 봇 세 명을 상대로 사람이 판의 59.8% 를 1등으로 끝냈습니다. 공정하다면 25% 여야 합니다. 가장 많이 플레이한 사용자에게는 hard 와 easy 의 차이가 0.2%p 였습니다. 코드 없이, 무엇을 어떻게 쟀고 왜 봇이 사람에게 읽혔는지를 정리합니다.
삼평 하이로우 v2.0 Part 5: 규칙 전문 — 기준 판정, 변경 이력, 미결 사항, 재현 스크립트
삼평 하이로우(PLS7) v2.0 규칙 전문입니다. 여섯 가지 평가 기준의 판정을 모으고, 실측 확률표와 순위 근거, 로우 세칙, 인원 권장선, 선택 규칙 PLS-2, 전략 참고표를 담은 새 가이드를 씁니다. v1.4 에서 무엇이 바뀌고 무엇이 그대로인지, 시뮬레이션이 답하지 못한 미결 사항은 무엇인지 기록하고, 핵심 수치를 재현하는 스크립트를 부록으로 붙입니다.
삼평 하이로우 v2.0 Part 4: 7-or-better 는 옳았나 — 로우 성립률, 스쿱, 그리고 인원 권장선
삼평 하이로우의 로우 규칙을 검증합니다. 7-or-better 는 6인 쇼다운의 47% 에서 로우가 성립해 “하이 게임에 로우가 끼어드는” 균형을 정확히 맞추고 있었고, 표준 8-or-better 로 바꾸면 70% 가 되어 매 판 반씩 나누는 게임이 됩니다. 인원별 로우 성립률과 분할 팟 비율로 “4명 이하는 하이 온리” 권장선을 다시 긋고, A-2-x 핸드가 하이로우 팟을 독식하는지도 확인합니다.
삼평 하이로우 v2.0 Part 3: 홀카드 자유 사용은 죄가 없다 — 찹, 보드 텍스처, 스타팅 핸드 쏠림
삼평 하이로우의 정체성인 “홀카드 0~3장 자유 사용” 규칙을 같은 딜 200만 회로 검증합니다. 보드만으로 승부가 나는 판은 6인 기준 0.14%, 하이 팟 동률은 홀덤과 같은 7% 였습니다. 최소 1장·최소 2장·정확히 2장 변형을 함께 재고, 보드 텍스처가 승자를 얼마나 결정하는지 홀덤·PLO 와 비교하며, 스타팅 핸드 1,755종의 에쿼티 지도로 쏠림을 확인합니다.
삼평 하이로우 v2.0 Part 2: 확률표는 틀렸다 — 8장 풀에서 다시 잰 족보 확률과 순위의 근거
삼평 하이로우 v1.4 가이드의 확률표 세 개를 딜 200만 회 시뮬레이션과 나란히 놓습니다. 풀하우스와 플러시는 실제의 절반으로, 트리플은 실제보다 높게 적혀 있었고, “트리플이 스트레이트보다 희귀하다” 는 순위 설명의 전제는 반대였습니다. 8장 풀 기준 희소성으로 족보 순위를 다시 검토하고, 스킵 스트레이트와 플러시의 순서를 어떻게 할지 결정합니다.
삼평 하이로우 v2.0 Part 1: 1년 뒤 다시 읽는 규칙 — 장점, 단점, 그리고 보존할 것
2025년 7월에 발행한 삼평 하이로우(PLS7) v1.4 가이드를 1년 만에 다시 읽습니다. 규칙의 장점과 단점을 가려내고, 단점이지만 게임의 정체성이라 보존해야 할 것을 미리 선언한 뒤, 플레이 횟수가 늘어도 쏠림과 질림이 나타나지 않도록 파인튜닝하는 5부작의 방법론과 평가 기준을 세웁니다.
훌라 CPU 플레이어 만들기 Part 8: 처음 보는 판에서 재다
훌라 hard 봇의 값을 동결하고, 한 번도 쓰지 않은 딜 256개에서 최종 검증을 합니다. 실험이 고른 값을 일부러 쓰지 않은 자리와 그 이유, 시험 문제를 열기 전에 합격선을 못 박는 절차, 인원이 늘수록 두 배씩 벌어진 결과, 그리고 Part 4 의 여덟 자리 중 무엇이 메워졌고 무엇이 메운 줄 알았는데 아니었는지를 결산합니다.
훌라 CPU 플레이어 만들기 Part 7: 저울의 추를 하나씩 빼 보니
훌라 hard 봇을 시뮬레이터로 잽니다. 같은 딜에서 hard 와 easy 를 바꿔 앉혀 딜 운을 지우는 방법, 도구가 만들어지자마자 잡은 “다른 봇을 재고 있었다” 는 버그, 8 seed 로는 아무 말도 못 하고 32 seed 에서야 방향이 보인 첫 성적, 그리고 손으로 정한 추 열한 개를 하나씩 빼 보니 넷은 5만 번의 결정에서 수를 하나도 바꾸지 않았다는 사실까지 다룹니다.
달무티 CPU 플레이어 만들기 Part 5: 코드 없이 보는 easy 봇과 hard 봇의 차이
Part 1 부터 Part 4 까지는 코드와 수식이 많았습니다. 이번 편은 개발을 모르는 분도 읽을 수 있게, 달무티 CPU 두 종류가 각각 무엇을 보고 수를 고르는지, 어떻게 겨루게 했고 결과가 어땠는지, 그리고 왜 격차가 이토록 작았는지를 정리했습니다.
렉시오 CPU 플레이어 만들기 Part 7: 코드 없이 보는 easy 봇과 hard 봇의 차이
Part 1 부터 Part 6 까지는 코드와 수식이 많았습니다. 이번 편은 개발이나 수학을 모르는 분도 읽을 수 있게, 렉시오 CPU 두 종류가 각각 무엇을 보고 수를 고르는지, 둘을 어떻게 겨루게 했고 결과가 어땠는지, 그리고 무엇은 아직 말할 수 없는지를 정리했습니다.
렉시오 CPU 플레이어 만들기 Part 6: 봇이 약한지 어떻게 아는가
Part 5 는 브라우저에서 한 판 돌려 찾은 결함을 고쳤습니다. 그 방법으로는 “조금 약하다"를 찾을 수 없어 시뮬레이터를 만들었더니, 도구가 전략을 재기도 전에 구현 버그부터 잡아냈습니다. 그리고 봇이 약한 이유를 세 번 틀리고 네 번째에 찾았습니다. 평가 함수는 처음부터 옳았고, 확률이 틀렸습니다.
달무티 CPU 플레이어 만들기 Part 4: 만들어 보니 hard 봇이 더 약했다
Part 1부터 3까지의 설계안을 실제로 구현해 시뮬레이션으로 재봤더니, hard 봇이 easy 봇보다 평균 0.6601등 나빴습니다. 무엇을 어떻게 쟀는지, 세 개의 구조 결함이 무엇이었는지, 어떤 고급 기능이 살아남았는지, 그리고 정정 후의 정식 검증 수치를 정리합니다.
달무티 CPU 플레이어 만들기 Part 3: 수 평가와 전략적 패스
달무티 hard 봇이 실제로 어떤 수를 고르는지 다룹니다. 리드권 확보 확률과 가치를 분리한 수 평가 함수, 낼 수 있어도 참는 전략적 패스, 차단 의무의 정확한 조건, 세금과 혁명의 기대값 계산, 그리고 봇이 정말 세졌는지 재는 검증 방법을 Go 코드로 정리합니다.
달무티 CPU 플레이어 만들기 Part 2: hard 봇의 정보 모델과 확실승수 판정
달무티 hard 봇이 상대 손패를 훔쳐보지 않고 무엇을 알아낼 수 있는지 다룹니다. 오차 0의 카드 카운팅, 패스를 확정 정보가 아닌 확률적 증거로 다루는 법, 광대 2장이 만드는 구조적 확실승수 판정, 그리고 손패의 최소 제출 횟수 플랜을 재현 가능한 몬테카를로 수치와 함께 정리합니다.
경마식 베팅 게임 설계 가이드 Part 2: 시스템 구축과 봇 유저 시뮬레이션
경마식 베팅을 서비스에 도입할 때의 시스템 설계 고려사항을 정리하고, 초기 유저가 부족할 때 풀을 채울 봇 유저의 베팅 행동을 사람답게 시뮬레이션하는 방법을 살펴봅니다. Plackett-Luce 모델, 페르소나 설계, 품질 검증까지 다룹니다.