局収支シミュレータを理解するための下準備
今日から局収支シミュレータを作るために必要なことを起案していこうと思う。
ただ、全部記事にすると10NOTEは超える。
そこで、ゆっくり・じっくり書いていこうと思う。
今日は、シミュレーションを理解するための前提について書いていこうと思う。
和了率はこうやって求めるのだ。
計算ってこうやるんだ。
などと思ってもらえればありがたい。
まず、1家立直に対して追いかけ立直をかけた場合の和了率を求めるケースを考えよう。
シンプルにするために次のモデルを置く(このモデルは理解のために置いたものであって、これが妥当なモデルというわけではない、この点注意が必要)。
① 先行立直者は下家
② 山牌をランダムに1枚引いたときに先行立直者の当たり牌である確率は6%とする。
③ 対面・上家は完全ベタオリしており、振らず・鳴かず・聴牌せず(和了もせず)
④ 自分は下家に対して現物を切って追いかけ立直をする。
⑤ 山牌をランダムに1枚引いたときに自分の当たり牌である確率は7%とする。
⑥ 山はあと4枚(1巡後に終了、自分がハイテイ)
このとき自分の和了率を求めるものとする。
皆さん、どうするだろうか?
いきなりお手上げになるかもしれない。
ただ、確率の問題と考えたらどうだろう。
上の仮定と麻雀のルールを考慮すれば、次のようなことが分かるはずである。
まず、現物を切る以上、その瞬間自分が振ることはない。
すると、次のターンは下家のツモである。
① その牌が下家の当たり牌であれば、自分の被ツモになる。
その牌が下家の当たり牌でなければ、その牌は切られる。
② 切られた牌が自分の当たり牌であれば、自分の和了となる。
(対面・上家が聴牌していれば対面・上家が和了する可能性、横移動の可能性があるが、今は聴牌していないと仮定しているので、その可能性は0である)
その後、対面は完全ベタオリしているから、対面が牌をツモって河に切る間に局は終了しない。
また、上家は完全ベタオリしているから、上家が牌をツモって河に切る間に局は終了しない。
その次が自分のツモ番である。
③ 自分が山から牌を持ってきてそれが自分の当たり牌であれば自分のツモ和了である。
また、自分がツモでなければ、その牌は河におかれる。
④ 河に置かれた牌が下家の当たり牌であれば自分は放銃する
⑤ 自分が放銃しなければ、流局になる。
というように、この局がどんな結果になるかは丁寧に調べればこのように全部場合分けができる。
場合分けができれば、それぞれの発生確率を求めることができる。
それぞれの発生確率が分かれば、この局で和了する確率が求められる。
局収支計算・局収支シミュレーションと言っているが、やっていることは
状況にあわせた適切なモデルを作る。
その局がどういう結果になるのか、そのパターンを全部追跡する。
追跡した結果毎の確率を求める。
追跡した結果のうちの和了に該当する確率を求める
これで和了率は求められる。
今回のケースで具体的な和了率を求めてみよう。
まず、立直して一番最初に発生するのは①下家のツモ和了(自分の被ツモ)である。
その発生確率は、
(下家が山から牌をツモる確率)×(山からツモった牌が当たり牌である確率)
である。
前者は必ず発生するので1、後者は0.06であるから、①の結果によって終了する確率は6%となる。
次に発生するのは、下家がツモらず牌を河に起き(必ず置く)、自分がその牌でロンする場合である。
その確率は
(下家が河に牌を切る確率)×(山からツモった牌が自分の当たり牌である確率)
である。
前者は0.94(1-0.06)である。
なぜなら、下家がツモ和了した場合はその場で局が終了するからである。
また、後者は0.07である。
よって、自分が下家の牌をロンする確率は
0.94×0.07=6.58%である。
次に、生じうる結果は③自分のツモ和了である。
その確率は、
(自分が牌をツモる確率)×(山からツモった牌が自分の当たり牌である確率)
である。
前者の確率は、下家がツモ和了せず、かつ、自分が下家からロン和了しない確率であるから、約87.4%(1-0.06-0.066)である。
また、後者の確率は0.07である。
よって、自分のツモ和了率は6.1%となる。
では、次に生じる結末は何か。
自分がツモ和了できなければ、牌をそのまま河に置く。
それがロンされる(自分から見て放銃する)可能性がある。
それが生じる確率は
(自分が河に牌を置く確率)×(その牌が下家の当たり牌である確率)
となる。
詳細は省略するが、その確率は4.9%となる。
自分が放銃しなければ、流局となる。
流局になる確率はこれまでの和了率・放銃率・被ツモ率を1から引いてやればいい。
つまり、76.4%となる。
これで、この局の結果、及び、その結果が生じる確率が分かった。
あとは、和了したケース、放銃したケース、被ツモのケースが発生した場合のそれぞれの確率を足し合わせれば良い。
すると、
和了率 12.7%
放銃率 4.9%
被ツモ率 6.0%
流局率 76.4%
と求められる。
このようにして和了率・放銃率などの確率は求めれる。
このときの点数変動の平均点(和了素点・打点・放銃時支出・被ツモ時失点・流局時収入)が分かれば、局収支も求められる。
これが計算によって局収支を求める方法である。
シミュレーションによる場合もそれほど外れない。
もちろん、現実はこれほど簡単ではない。
例えば、対面・上家が微妙に危険牌を切って、自分や下家に刺さることがある。
しかし、その場合は、
対面が自分に放銃する確率(ロン和了)
対面が下家に放銃する確率(横移動)
上家が自分に放銃する確率(ロン和了)
上家が下家に放銃する確率(横移動)
を求めて、適宜追加すればよい。
そして、それは土台さえ作ってしまえばそんなに大変なことではない。
また、今回は山が4枚だったが、実際に計算する場合はもっと山の枚数が多いことがある(例えば11巡目なら山は28枚ある)。
この場合も、山が0枚になるまでに生じた結果(和了したケース・放銃したケース)を数え上げて確率を求めて追加すればよい。
それもそれほど大変なことではない(土台を作れば、だが)。
以上、シミュレータ・計算で和了率が求められる過程を具体的に説明した。
実際のシミュレータはもっと複雑である。
しかし、シンプルな例を把握すれば、複雑な例も把握しやすくなるだろう。
その足しにしていただきたい。
それでは。
もし気が向いたら、サポートしていただければありがたいです。 なお、サポートしていただいた分は、麻雀研究費用に充てさせていただきます。