東風荘のツモは予測できるか
2001/10/13  とつげき東北


ときどき「東風(のツモやツキ)には偏りがある」と言っている人をみかける。論拠の一つは「コンピュータは完全なランダムを作れない」ことだそうだ。
彼の「東風は本物の麻雀ではない」という主張は、彼がいかに「本当は強い」か、彼が東風で結果を出せないことがいかに彼の無能によらないかを暗に意味することができる。
それゆえに彼はどうしてもその主張を信じたがる。
そこで東風のツモに偏りが存在するかどうかを調べた。


ロジック:

さてひとことで「ツモの偏り」と言っても色々ある。例えば偏り方として
1)ある牌をツモったあとに、ある牌をツモる確率が「完全にランダムに並べられた場合」に対して増加したり減少したりする
2)ある行動をした直後に、ある牌をツモる確率が増加したり減少したりする
3)ある状況にいる時に、ある牌をツモる確率が増加したり減少したりする
のように着目する点によっていくつかのものがあるだろう。
1)における「偏り」がわかれば、次のツモを予測したり上がりやすい牌を選択したりすることができる。
2)の場合は、どんな行動によって牌をツモりやすくなるかがわかるので、「鳴いて流れを変える」的な行動が可能になる。
3)はさらに広範な意味で、このような「偏り」を理解していれば、「全体の流れ」を技術化することができる。
3)のような長期的な意味での「ツキの偏り」については、論文「流れが存在しないことの証明」において、前回の順位と次回の順位の間に相関が認められなかったことをもって「存在しない」とする。この論文では、1)や2)の比較的ミクロな視点での牌の偏り方について調べた。

牌Aをツモる確率をP(A)とする。牌Bをツモる確率をP(B)とする。
ここで、AとBがある関係の元にツモられるとして、その場合の「共起」Cを、P(A|B)÷(P(A)×P(B))で定義する。
これは、例えば1順前にAをツモったことと今回にBをツモったことの関係を調べるのに用いる。
「AとBが何らかの関係性のもとにツモられる可能性 ÷ AとBとが全く独立にツモられる可能性」を意味するので、AとBがどの程度関連しているかの指標にすることができる。

山の並びに対して、また各プレイヤーの連続するツモに対して、牌の共起を調べて考察する。これによって1)の意味での偏りを検証する。
また、自分のリーチ直後および他人のリーチ直後にツモる牌の分布が、通常時の分布に対してどうであるかを調べることで、2)の意味での偏りを検証する。


データ:

・山の並びに対する偏り

2000/01/01〜2001/10/13
ワイ卓110試合 ラン卓1試合 上ラン卓1728試合 超ラン卓3639試合 計5478試合
全ツモ個数1877514

データは莫大なのでこちらのファイルに示す。
牌番号の10の位は牌の種類(マンズ・ピンズ・ソーズ・字牌)を、1の位は数を(字牌の場合1〜順に東南西・・・)表している。

ある牌と、それとは別種のある牌との共起は平均0.986、標準偏差0.02775であった(平均1にならないのは主に0除算回避のための小数誤差による)。
ある牌と、その牌との共起(2連続で同じ牌をツモる場合)は平均0.737であり、別種牌をツモる確率の3/4(理論値)に対して誤差0.3%である。

・各プレイヤーのツモに対する偏り

データ元は上と同じ。データは省略。

ある牌と、それとは別種のある牌との共起は平均0.985、標準偏差0.028であった。

・ある行動直後のツモに対する偏り

無条件下で字牌をツモった確率は0.206
自分のリーチ直後に字牌をツモった確率は0.205
他家のリーチ直後に字牌をツモった確率は0.206


考察:

データを見れば一目瞭然だが、「次のツモ」や「山の次の牌」の分布は全くランダムであり、色・スジ・ソバ・自家や他家のリーチなどで次のツモを予測することは不可能である。
少なくとも、仮に偏りがあったとしてもこの数字の列から法則性を見いだすことよりは難しい(そしておれが見る限りこれは「ランダム」である)。
ランダムさを定量化する方法はいくつか考えられるがこの数字の乱雑さを見てわざわざ計算する気がなくなった(笑)。

また、ある牌とその次に積まれた牌、さらにある牌と次のツモ牌との間に規則性がないということは、ある牌と、その次の次の牌や、ある牌と、次の次のツモ牌との間にも一般的に規則性がないことを示唆している(ある牌とその8つ先の牌とは必要以上に関連づけられており、ある牌とその12つ先の牌とはそれを埋めるために必要以上に関連づけられていないといったような奇妙な、何の意味もない「偏り」を想定すれば別だが 笑)。

また、自家リーチの直後にツモる牌は「ランダム」であり、一般にリーチの待ちは数牌待ちが圧倒的に多くなることを考えると、あるプレイヤーが「一発率が高くなる」ようなツモり方はしていないことがわかる。
同様に他家リーチの直後にしても「ランダム」である。

以上をもって「東風の牌山には偏りがない」と結論づけることは至極妥当であるように思う。


牌のきかたはどうやっても読めないよ:

ところで「コンピュータでは完全なランダムは作れない」という主張のおかしさについては何度かこのHP内で解説したが、繰り返す。
原理的には(おそらく言われている意味での)「完全なランダム」を作ることができるし、また完全ではないが実用上完璧と言って良いランダムを作ることはできる。
例えば以下のもっとも単純な乱数生成ルーチンがあったとして、これを牌山を積む際に利用するとする。

srand(int(timeGetTime()%5000));
ShowMessage(random(1000););

この乱数が利用者に予測可能であるためには、この命令が東風荘サーバによって実行される瞬間の時刻を1/1000秒単位で知らなければならない。
(東風荘の全ての卓で、各プレイヤーが1打打つごとにパケットが送信される。東風サーバは通信の混雑状況によってパケット受信処理に要する時間が異なるので、web上の全ての回線の混雑状況を完全に把握していなければならない。もちろん、各プレイヤーがどんなタイミングで牌を切るかは全て知っていなければいけない。1つでも間違うとパーだ)
さらに、東風に接続しているプレイヤーのユーザIDやPasswordが乱数生成のために利用されているなら、当然あなたは全員のユーザIDとPasswordを知っていなければならない。
そうでない限りは牌山はあなたにとって紛れもなく「ランダム」であり、「牌のきかたが読める」ようなことはあり得ない。
ていうか無理。


ついでに、トイツ場について:

ある牌をツモった直後に同種牌をツモる確率は理論値通りの値(他の任意の牌の3/4)を示した。
もしも「トイツ場」なるものが存在し、その間トイツをツモる確率が上昇しているなら、同種牌をツモる確率は上昇しなければならない。
または、「トイツ場」の時はトイツになる確率を無理矢理上昇させ、その分だけ「普段」はトイツになる確率を無理矢理減少させるというよくわからないことをしなければならない。
少なくとも「東風荘のツモ」に対して、恣意的に作られたトイツ場は存在しないと言ってよかろう。
つまり「トイツ場だから、リャンメン受けではなくシャンポン受けにする」のは、ツモ牌の数的には不利なだけであることがわかる。
もちろん、たまたまトイツがたくさん固まった結果、シュンツとして使える牌が減少して各プレイヤーのメンツが普段よりもトイツとして完成しやすくなるということはあるし、その意味で「トイツ場だなあ」と感じることは実際にあるとしても。




<bgsound src="tamsp01.mid" loop="infinite">