「牌の危険度」の求め方

 今日は過去ブログに書いた記事を再掲する。
 具体的には、私が書籍などに掲載している「牌の危険度」の求め方について。


1 牌の危険度の定義

「牌の危険度」とは、「ある牌を切ったときにその牌で刺さる確率」である。
 例えば、「無筋1pの危険度」とは、(4pが切られていない)無筋の1pを切った場合に、その1pで刺さる確率を言う。
 単位は%である(0.0いくつと書くと分かりづらいため)。

 19・28・37・46は牌の対称性の観点から一緒くたにしている。
 また、ピンズ・ソーズ・マンズも対称性から一緒くたにしている。
 だから、無筋2pの牌の危険度と無筋8p、2s、8s、2m、8mの危険度は同じである。
 そして、牌の危険度を求める際もこの6種類のデータを合算して求めている。


(以下、牌の危険度の求め方について書いている、興味ない人はこれ以降読む必要なし)

2 牌の危険度の求め方

 牌の危険度に関しては2種類の求め方があるので、それについて触れておこう。
 牌の危険度は2種類の求め方がある。
 一つ目は具体的牌危険度、二つ目は抽象的牌危険度と言う。

 まず、「具体的牌危険度」とは、「プレーヤーが現実に切った牌のみを対象とした場合の牌の危険度」である。
 他方、「抽象的牌危険度」とは、「プレーヤーが切ることのできた牌を対象とした場合の牌の危険度」である。
 私が求めている「牌の危険度」は「抽象的牌危険度」である。


3 具体的牌危険度と抽象的牌危険度

 ここでは具体的牌危険度と抽象的牌危険度の違いについて説明する。
 両者の違いは、立直者に対して現実に切った牌のみをカウントするか、立直者に対してプレーヤーの切ることが出来た牌(現実に切らなかった牌も含む)もカウントするか、である。
 前者が具体的牌危険度、後者が抽象的牌危険度である。

 以下、数式を用いて説明する。
「具体的牌危険度」の場合、無筋5の牌の危険度を求める際の分子・分母に来る式は

(具体的牌危険度の分子)= (無筋5pが現実に切られた場合の無筋5pが当たり牌だった回数)
(具体的牌危険度の分母)= (無筋5pを現実に切った回数)

となる。
 これに、無筋5s・無筋5mのケースが加わるわけだが。

 他方、「抽象的牌危険度」の場合、両筋5の牌の危険度を求める際の分子・分母は、

(抽象的牌危険度の分子)= (両筋5pが切ることが可能だった場合の両筋5pが当たり牌だった回数)
(抽象的牌危険度の分母)= (両筋5pを切ることができた回数)=(対立直者の手牌に両筋5pがあった回数)

となる。
 こちらも、これに両筋5s・両筋5mのケースが加わるわけだが。


4 具体例

 具体例を出してみよう。
 例えば、立直者に対する自分の手牌が

2p3p4p5p7p9p1s2s5s5s3m5m7m9m

であり、ここから9mを切ったとしよう。
「具体的牌危険度」の場合、考慮されるのは現実に切った牌だけであり、9mだけである。
 他方、「抽象的牌危険度」の場合、現実に切った牌だけではなく、切ることができた牌が考慮されるので、考慮されるのは手牌にある牌、つまり、

2p3p4p5p7p9p1s2s5s3m5m7m9m

全部である(トイツやアンコで持っている牌は1度しかカウントしない)。

 以下、立直者は字牌しか切っておらず、切られた牌は総て無筋とする。 
 現実的牌危険度の場合は、

 9mを切ったので無筋19の危険度の分母に1プラスする。
 9mが当たり牌であったら分子にも1プラスする。

で終わりである。
 つまり、現実に打った9mしかカウントされない。

 他方、観念的牌危険度の場合は、

2pを切ることが可能なので、無筋28の危険度の分母に1プラスし、2pが当たり牌であったら分子に1プラスする。
3pを切ることが可能なので、無筋37の危険度の分母に1プラスし、3pが当たり牌であったら分子に1プラスする。
4pを切ることが可能なので、無筋46の危険度の分母に1プラスし、4pが当たり牌であったら分子に1プラスする。
5pを・・・
7pを・・・
9pを・・・
1sを・・・
2sを・・・
5sを・・・
3mを・・・
5mを・・・
7mを・・・
9mを・・・

となる。
 持っている牌全部がカウントの対象となるのである。


5 抽象的牌危険度の長短

 牌の危険度のイメージからすれば、具体的牌危険度の求め方の方が直感にあう。
 私が以前伺ったところによると、nisiさんが求めた牌の危険度は具体的牌危険度である。
 他方、ほしきゅー、クレーンらの牌の危険度は抽象的牌危険度らしい。 
 私は、ほしきゅー、クレーンの流れで牌の危険度を求めているところがあるので、抽象的牌危険度のデータを掲載している
 もちろん、プログラムを書き換えればすぐに具体的牌危険度の数値を求めることができるので、一部のデータは持っているし、持ってない部分も求めようと思えば求められるが。

 では、抽象的牌危険度を用いるメリットは何か。
 最大の長所と考えているのは、「捨て牌に関するプレーヤーの意思を排除できる」点がある。
 例えば、立直者に対して牌を切るのだから、牌を切る場合「できるだけ安全な牌を切る」という意思が働くことだろう。
 具体的には、「ソバテン無筋19は切らない」とか「アンコ筋無筋46は極力避ける」とか。
 その結果、具体的牌危険度は本来の数値よりも低い数値が出るくる可能性がある。
 他方、抽象的牌危険度の場合、手牌にその牌がありさえすれば、現実に牌を切ったかを問わずカウントされるので、「捨て牌に関するプレーヤーの意思」は排除されており、その点を気にする必要はない。

 次に、「サンプル数を増やすことができる点」も重要なメリットである。
 具体例でも示したが、抽象的牌危険度の方がカウントされる絶対数は増える。
 それは、牌の危険度でレアな場合のデータ数を増加させることに役に立つだろう。

 もちろん、欠点もある。
 重要な欠点は、直感と異なるという点である。
「切ることのできた牌」の大半は「切らなかった牌」でもある。
 それをカウントしてしまうのはどうなのか、直感に反する、と言われれば、なんともいえない。


6 おわりに

 以上、牌の危険度の求め方について説明した。
「牌の危険度とはなんぞ」と思った際の参考にしていただければ幸いである。


 それでは。

もし気が向いたら、サポートしていただければありがたいです。 なお、サポートしていただいた分は、麻雀研究費用に充てさせていただきます。