DB/R/統計/データサイエンス/投資話についてつらつらと

世のため自分のためのアウトプット

Poker Python

特定ハンド同士の勝率と代表ケース勝率 (pythonでシミュレーション3)

投稿日:

テキサスホールデムのヘッズアップにおいて、プレイヤー同士の手札を固定した場合の勝率を求めてみました。
「オールインしたら相手がAポケだった!!!」ときにどれぐらい絶望しなければいけないかの心の準備としてどうぞ。(たいてい10秒後には結果がわかります)

コードのベースは以下の記事を参考ください。

pythonでテキサスホールデムのシミュレーション1

また、VSランダムハンドの勝率は以下を参考ください。

プリフロップハンド毎の勝率 VSランダムハンド (pythonでシミュレーション2)

シミュレーション用のコードは以下のgithubに配置しています。

https://github.com/T-A0K1/texas_holdem_python

1. 特定ハンド同士のヘッズアップ

特定ハンド同士のヘッズアップの勝率を求めました。
個人的に特徴的だと思うハンドをピックアップしています。もし指定のハンドでの勝率について知りたい等ありましたらコメントにお願いします。

※お互いのハンドはマーク違いの場合の勝率にしています。例えば、72s VS 32oの場合、72sはハードのスーテッド、32oはクラブとスペードです。
※勝率は行方向に見てください。例えば1行目の23oは VS 27oの勝率が35.6%になります。

27o 6Qo Tjo AKo 23s 6Qs
23o 35.6% 34.4% 33.3% 34.0% 47.4% 33.5%
27o - 35.3% 31.5% 33.6% 61.2% 33.6%
6Qo - - 54.2% 33.2% 61.3% 47.7%
Tjo - - - 37.4% 62.1% 42.8%
AKo - - - - 61.6% 63.3%
23s - - - - - 36.4%

TJs AKs 22 99 KK AA
23o 31.9% 31.9% 33.1% 15.9% 14.8% 13.6%
27o 29.0% 31.0% 32.8% 12.6% 12.5% 12.5%
6Qo 50.8% 31.5% 47.0% 29.3% 13.2% 13.3%
Tjo 47.4% 34.9% 51.5% 45.8% 16.4% 17.8%
AKo 59.1% 47.6% 46.4% 44.6% 30.3% 7.3%
23s 35.4% 36.4% 37.3% 19.3% 19.2% 17.8%
6Qs 57.3% 37.0% 50.2% 32.7% 16.9% 17.2%
TJs - 38.8% 53.7% 48.0% 20.2% 22.0%
AKs - - 49.9% 47.6% 34.6% 12.2%
22 - - - 19.0% 19.2% 18.5%
99 - - - - 19.9% 19.6%
KK - - - - - 18.5%

シミュレーションコードでは、sample3をベースに以下のようにします。ハンドを固定するプレイヤーを二人に増やすだけなので、シンプルです。

hand0 = [131,132] #set player0's hand
hand1 = [143,144] #set player1's hand
for pref_ in hand0+hand1:  library_card.remove(pref_)

2. 一般的なケースでの勝率の目安

1章では具体的なケースでのシミュレーション結果について記載しましたが、その中から一般的なケースでの大体の勝率についていくつかピックアップします。

※2つの数字によって結果が変わってきます。そのため、大体の数字で認識ください。
例えばKQo VS 56oと KQo VS T5o では、ストレートの可能性があるため前者のほうが勝率が高い等です。
また、お互いの数字が低いと約を作るときにハンドが絡まず引き分けになるケースが増える等があります。

2.1 非ペア同士

お互いの手札の大小によって、大きく5つのケースがあります。

  1. 入れ子になっている(1章の例では、27o VS 6Qoのケース
  2. 挟み込んでいる(1章の例では無いですが、2To VS 58o等
  3. 完全に上下が分かれている(1章の例では、27o VS AKoのケース
  4. 下の数字が同じケース(1章の例では、23o VS 27oのケース
  5. 上の数字が同じケース(1章の例ではないですが、2To VS 6To等

それぞれのケースでの結果は以下になります。

強い方の勝率
入れ子 60-65%
挟み込み 55-60%
上下に分かれている 65-70%
下の数字が同じ 65-72.5%
上の数字が同じ 70-75%

挟み込んでいるケースでは、上の数字を含むプレイヤー(27o VS 6Qoの6Qo側)が強くなります。お互いハイカードになったときにキッカーで勝ちやすいためですね。

変動要因として、お互いのカードの値が低いときは引き分けになりやすく(お互いの約にハンドが絡まず引き分けになるケース)外側の勝率が相対的に低くなります。
この事自体は、他のケースでも同様になります。

また、下の数字が同じよりも上の数字が同じ場合のほうが勝率が偏るのは、下の数字でペアになってもまくられる可能性が高いからになります。

2.2 非ペア VS ペア

こちらもいくつかパターンが考えられます。

  1. ペアが非ペアのいずれよりも数字が小さい(22 VS AKo)
  2. ペアが非ペアの数字の間にある(99 VS 6Qo)
  3. ペアが非ペアのいずれの数字よりも大きい(27o VS AA)
  4. ペアが非ペアの小さい方の数字と同じ(27o VS 22)
  5. ペアが非ペアの大きい方の数字と同じ(AKo VS AA)

これらの結果は以下になります。

ペアの勝率
ペアが非ペアのいずれよりも小さい 40-50%
ペアが非ペアの間 67-72%
ペアが非ペアのいずれよりも大きい 12-14%
ペアが非ペアの小さい方と同じ 30-35%
ペアが非ペアの大きい方と同じ 90-95%

ペアが非ペアのいずれよりも小さい場合では、有名なケースとして22 VS AKoがあります。これがだいたい50%と覚えておくと便利ですね。

また、ペアが非ペアの大きい方と同じケースでは、非常に非ペア側の勝率が低くなっています。こちらも有名ですが、 VS AAでは、KKが27oよりも勝率が低いことで有名ですね。(AK側はKを2枚引かないと行けないが。27o側は2か7のどちらかを2枚引けばよいため、まだ受けが広い)

3. おわりに

今回は、具体的なハンド同士のケースと、それにまつわる一般的なケースの勝率について紹介しました。

一般的なケースの勝率はオッズの計算などで実戦でも使うことが多いので、頭に入れておくと便利ですね。

コードの話が殆どなかったですが、今回はこんなところで。お読みいただきありがとうございます。

質問や誤りがございましたらコメントお願いします。

-Poker, Python
-,

Copyright© 世のため自分のためのアウトプット , 2020 All Rights Reserved Powered by STINGER.