ポーカーのトーナメントにおけるポジション移動

確率論

概要

 今更ながら気になったのであるが、筆者が開発しているポーカーゲームと他のポーカーアプリで、トーナメントの際に脱落するプレイヤーが出た場合のポジション移動が異なるような気がしてきた。なんとなく、BTNを時計回りに1個動かせば良い気になっていたのであるが、もしかしたら筆者は間違っているのかもしれない。いや、もしかしなくても間違っているので、修正ついでに処理をまとめてみようというのが本稿の内容である。

BTNではなく、BBの位置を時計回りに1つ動かす

 BTNを時計回りに1個動かすことの何が問題かというと、脱落するプレイヤーがいた場合、BBをスキップしてしまうプレイヤーが出てきてしまうことになる。例えば、

ABCD
BTNSBBBUTG/CO

でSBのプレイヤー(プレイヤーB)が脱落したと仮定する。このとき、BTNをそのまま1個動かすと

ABCD
BB×BTNSB

となるが、プレイヤーDはBBがスキップされてSBになってしまうことが分かる。BBの負担を1回避けることができてしまうということで、これは適切な処理ではないということになる。この場合、

ABCD
UTG×BTNBB

という割り当てになって、SBが存在しないというのが正しい処理であるようである(Dead SBというらしい)。SBの脱落以外はBTNを1個移動するでも同じ処理になるので、このケースだけ特別な処理が必要になる。

 別の考え方として、BB>SB>BTNの順に優先順位を考えて

ABCD
UTG (BTN)×SBBB

として、SBではなくBTNが存在しない(もしくはBTNが移動しない)というルールもあるらしい(Dead BTN)。昔のルールはこちらだったらしいが、最近のルールでは前者の方法が採用されることが多いとのことだった。優先順位として、BB>BTN>SBの順で割り当てを優先する結果としてこのようなルールになっているようである。特に、フロップ以降のアクション順位が変わるため、ポジションの割り当ては適切に処理する必要がある。まあ、筆者のゲームではゲームルールの設定項目として選べるようにした方が良いのかもしれない(といいつつDead SBで対応して、将来的な拡張として検討する感じだろう)。

SBとBBが同時に脱落した場合

 複数のプレイヤーが同時に脱落する場合は、以下のケースで分けられる。

  1. SBを除いたプレイヤーが脱落する場合
  2. SB+BB以外のプレイヤーが脱落する場合
  3. SBとBBのプレイヤーが脱落する場合

1.の場合は通常通りBTNを移動、2.の場合は前節におけるDead SBと同じ扱いになる。特殊処理になるのは3番目のケースである。

 以下のようなケースを考えよう。

ABCDE
BTNSBBBUTGCO

この場合にBとCが同時に脱落したものとする。あくまで、BBは一つしか進まないので、この場合は

ABCDE
SB××BBBTN

となるようである。なんとなくSBの割り当てが不公平に感じるが、BBの割り当てが優先される結果として、このような配置にするのが正しいようである。二人以上脱落するとよくわからなくなってしまうため、BBを一つ動かして、SB、BTNはそれぞれBBの1つ手前、2つ手前のプレイヤーに割り当てられるということになる。この場合、BTNが逆回転しているように見えるということで、なんとも不思議に感じるルールである・・・

 もう一つの例として、複数のプレイヤーが同時に脱落した結果としてヘッズアップになる場合である。この場合はBTNが動かず、BBの位置だけが移動することになる。上の例で、SB、BB、COが同時に脱落した場合は

ABCDE
BTN/SB××BB×

という割り当てになる。

 特殊処理としては、SB+BB以外、SB+BBの2通りを組み込めば問題がなさそうである。実装上SBがいない場合という処理は特別に組み込まないといけないのと、SB+BBは結局BTNを1つ逆回転させるのと同じ処理なので、BTNの逆回転処理を組み込めばとりあえずの対応はできそうである。自分でトーナメント(S&G,MTT)のロジックを開発するという場合は注意が必要だろう。