見出し画像

麻雀の押し引きシミュレーター開発

ここ最近麻雀にはまっていて、実践的に使えるツールを作ってみました。

状況は東1局で相手の子からリーチが入っていて、自分が鳴いて1000点愚形テンパイしており、自分の手番で無筋37牌を切ればテンパイを維持できる状態です。
グラフはこのときに押した場合と降りた場合をシミュレートしたものです。

画像1


この結果から以下のことがわかります。
・11巡目以降はベタオリよりも押したほうが得
・実践的には流局時にテンパイできる可能性があるので、14巡目までは降りたほうが得

細かい前提条件
・縦軸はpt期待値で、雀魂玉南雀豪1のpt配分で計算
・無筋37はその順目にリーチ者に通っていない37牌を押して以降すべて押す
・降り(赤線)はテンパイを崩して放銃0%で流局時テンパイ率0%
・回し(黄色線)はテンパイを崩して放銃率0%で流局時テンパイ率20%
・横移動は考慮しない

今の所リーチに対してのみ押し引きをシミュレートできます。
パラメータとしては「4人の点数状況」「現在の局数」「自分の手の待ち枚数」「自分の手の打点」を調整してその都度グラフ化できるようにしてあります。なのでネット麻雀でもリアル麻雀でもその局面を切り取って値を入力すればシミュレートすることができます。現状はプロトタイプとしてExcelで試しているところです。

これを作るにあたっていくつか事前データを用意する必要がありました。
順位期待値とリーチ者の打点は天鳳牌譜データを使って出しています。各順目での放銃率は「統計学の麻雀」の放銃率データを使わせていただきました。

ひとまず中身はできたのですが課題もいくつか残っていて。特にシミュレーションの精度がこれで正しいのか、実用レベルなのかといったところを解消していきたいです。

例えばグラフを見ると終盤になるほど押しが有利になる傾向になります。これは流局時にテンパイ料が貰えるためなのですが、直感的には終盤になるほど降りる思考をする人は多いはずです。なのでこんなにpt期待値が上がっていいのか?などです。

ゆくゆくはWebアプリ化してみたいとは思っています。需要があるかどうかですが。
完成したら使ってみたいと思った方は、下のスキを押していただけるとやる気が出るのでよろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?