このブログ内を検索可能

2024年7月9日火曜日

テキサスホールデムの確率(7) 現在のカードから勝率を計算

 すでに手持ちとディーラーカードを合算したカードでどれが最高役になるかは判定できたので、次に相手のカードは分からないので、各フェーズにおいてディーラーのカードからの相手の役の確率分布を知りたいところ。

しかしそれを知ろうとすると、途方もない時間がかかってしまう。およそ計算に30日かかる見込みであるが、そこまで厳密な値は知れなくても良いので適当に100000回くらいやったものをサンプルとして利用しようと思う。

同様に、カード枚数が少なくパターンが多すぎる場合は適当に試行を途中でうちきって勝率をチェックする。

それにより、それぞれのフェーズで勝率を計算しようと思っていた…のだが、ランダムに100回実行するだけでも十数秒かかるため制限時間内でどうにかなるものではない。

そのため、都度確率を計算するには数が足りないのであらかじめ計算しておく必要がある。

よって最初のカード2枚(+ディーラー側5枚)に対して各役の成立確率を計算する必要がある。

とはいうものの、最初の2枚が与えられても残りは50C5通りと非常に総数が多く、現時点で1000パターンに十数秒(1秒50パターン程度)かかるのである2枚の組に対して2118760パターンしらべるので、それだけで数時間かかる見込み。そしてそれが52C2=1326通りあるのでとてもではないが計算しきれない。なのであらかじめ計算するといってもそこでもやはり10000回くらいで打ち切らざるを得ない。

全パターンでおよそ1日くらいで出来上がってほしいので86400秒、すなわち4320000パターン探索可能なのでそれを1326で割るとだいたい3000回試行ができそうである。

その後のフェーズでは最初の2+3枚が与えられるのだが、ここでもやはり同じパターンで計算を行う必要がある。

はたして3000回の試行で勝率をそれなりに把握することができるのか。

スーパーコンピューターでも使えるのならば一気に総当たりで確率を算出してそれをデータとして保存し利用できるが…。

このあたりは計算リソースの限界なので、これ以上はどうしようもない。

一応2+4枚まで来ると各パターンは46通りなのでランダムは必要なく

2+3枚で各パターンは47C2=47*23=1081なのでここでも厳密な値は求められる。

なので最初の2枚だけはおおざっぱな確率、以後は厳密な確率を求めることができる。

…のだが、その場合各パターンが膨れ上がるので総当たりは厳しい。

具体的には2+3枚時点で2809475760回、2+4枚時点で936491920回、2+5時点で133784560回なので、一番簡単なものでもすさまじく時間がかかる。

するとやはり都度計算が必要になる。

この点で最適解を構築することが非常に難しい。