注: 以下は計算方法変更のためのバックアップ兼アーカイブである。 誤りが含まれていても訂正されない。

我打麻将の研究室

天和時の役複合率

概要

役別の和了形総数を求め、天和における役の複合率を算出する。

前提

方法と結果

各役によって、手作業で数え上げることのできるもの、パターンをプログラムで数え上げるものなどがある。 以下、役別に示す。

準備

字牌部分役

数牌3スート分の面子手データがよく使われるので、算出しておく。 畳み込み計算は、母関数の積をとればよいと考えられるが、単純にそれを実行すると、雀頭の関係でうまくいかない。

途中計算として、数牌2スート分が、0, 2, 3, 5, 6, 8, 9, 11, 12, 14 枚について {1, 108, 968, 90672, 364800, 29132488, 68669032, 4589545112, 6996329774, 384392282236}

結果として、数牌3スート分が、同様に {1, 162, 1452, 214416, 898584, 120100668, 311158396, 37356362748, 66738862869, 7140498565560} となる。

注釈

1スート → 2スート の計算には母関数の積を利用することができる。つまり、母関数の積を利用して求めてから、指数が1, 4, 7, 10, 13, 15以上の項の係数を0とし、新たな母関数とすればよい。

数牌部分役

各数牌部分役について、各色で必要なものを含む組合せ数を計算するプログラムを別に組んだ。 なお、ここで「必要なもの」をすべて0とすれば、もとの清一色解析におけるデータと一致する。

四風会

残り1対子は30通りであり、重複度は四風会部分が44, 対子部分が6である。 よって、求める組合せ数は 46080.

大三元

残り1面子1対子については、字牌4種・数牌9種3スートのデータを用いて、合計5枚の形を求める。 求める組合せ数は 16137216.

緑一色

順子を構成することのできる数牌は3種1スート、順子を構成できない牌は3種である。よって、数牌3種データと字牌3種のデータを用いて計算する。 一般形は、0, 2, 3, 5, 6, 8, 9, 11, 12 枚について、数牌が {1, 18, 76, 336, 312, 492, 76, 12, 1} 字牌が {1, 18, 12, 144, 48, 288, 64, 0, 0} より、146082. 七対は、0, 2, 4, 6, 8, 10, 12 枚について、どちらも {1, 18, 111, 252, 111, 18, 1} より、55976. どちらにも取れるものが、字牌2枚(18)・数牌12枚(1)存在するので、上の和からこれを引き、求める組合せ数は 206040.

連七対

和了形は3ランク×3色=9種、重複度は67である。 よって、求める組合せ数は 2519424.

十三幺

和了形は13種、重複度は4126である。 よって、求める組合せ数は 1308622848.

清幺九

字牌6種のデータが和了形の総数となる。14枚データにおいて、一般形と七対の和は 106056.

小四風会

残り1面子については、字牌3種・数牌9種3スートのデータを用いて、合計3枚の形を求める。 求める組合せ数は 2248704.

小三元

残り2面子については、字牌4種・数牌9種3スートのデータを用いて、合計6枚の形を求める。 求める組合せ数は 265510656.

字一色

字牌解析のデータが、そのまま和了形の総数となる。 一般形と七対の和は 814008.

四暗刻・碰碰和

34種の牌から、4刻子と1雀頭を選び和了形を構成する。 求める組合せ数は 2137006080.

一色双龍会

牌姿は3通りで、重複度は67である。 よって、求める組合せ数は 839808.

一色四同順

役部分については、6ランク3色=18通りである。残り1対子が31通り、重複度は6である。 よって、求める組合せ数は 3348.

一色四節高

役部分については、5ランク3色=15通り、重複度は44である。残り1対子が30通り、重複度は6である。 よって、求める組合せ数は 691200.

一色四歩高

タイプ1の場合、役部分は4ランク3色=12通りであり、雀頭はその他の牌で28種、役が1枚使う牌で2種、役が2枚使う牌で2種がある。 よって、求める組合せ数は279552.

タイプ2の場合、役部分は3通りであり、雀頭はその他の牌で25種、役が1枚使う牌で6種、役が2枚使う牌で3種がある。 よって、求める組合せ数は27869184.

以上より、求める組合せ数は 28148736.

混幺九

字牌13種のデータが和了形の総数となる。(ただし、実際には計算量の関係で、一般形と七対に分けて手計算する。) 一般形と七対の和は 573113112.

七対

解析データを畳み込むだけでよい。求める組合せ数は 1569298171584.

七星不靠

字牌の組み合わせと数牌の組合せを数えてかける。 求める組合せ数は 57982058496.

全双刻

12種の牌から、4刻子と1雀頭を選び和了形を構成する。求める組合せ数は 6082560.

清一色

清一色解析によって算出されたデータの3倍が、そのまま和了形の総数となる。 求める組合せ数は 1347754512.

一色三同順・一色三節高

該当役のパターン7種に対して、独立にそれを含む組合せを計算し、畳み込みによって手牌全体の組合せ総数を求める。 すると、一色四節高であるものが2重に数えられてしまうため、これを引く。 まず、それぞれのパターンは、軸ごとに

28
{64, 2304, 18193, 397332} (×2)
37
{64, 2304, 14113, 311812} (×2)
456
{64, 2304, 10273, 232452} (×3)

これを合計して {448, 16128, 95431, 2115644} を萬子のパターンとして畳み込み、それを3倍する。 求める組合せ数は (14084106×2+13386586×2+12731226×3)×3 で 279405186.

全大・全小・全中

数牌3種のデータを取る。 一般形は 0, 2, 3, 5, 6, 8, 9, 11, 12 枚が {1, 18, 76, 336, 312, 492, 76, 12, 1} 七対は 0, 2, 4, 6, 8, 10, 12 枚が {1, 18, 111, 252, 111, 18, 1} 複合形は 0, 2, 6, 8, 12 枚が {1, 18, 216, 108, 1} であった。 般63288972+対14271984-複2659500で、求める組合せ数は 74901456.

清龍

清龍を構成するスートにおける9, 11, 12, 14枚形を求める。 これは手作業でも容易に可能で、{262144, 2359296, 6782976, 44974080}である。 このデータの先頭に0を補って萬子のデータとして畳み込むと、清龍の和了形総数の1/3が求まる。 それを3倍して、求める組合せ数は 116688273408.

三色双龍会

和了形は3通りであり、重複度は4126である。 よって、求める組合せ数は 301989888.

一色三歩高

一色三同順・一色三節高と同様の方法をとる。 ただし、2種類の一色三歩高に取れる手牌の種類には注意しなければならない。 まず、それぞれのパターンは、(タイプ, 軸) ごとに

(1, 37)
{2304, 60672, 398848, 5201408} (×2)
(1, 46)
{2304, 60672, 260608, 3717632} (×2)
(1,5)
{2304, 60672, 168448, 2903552}
(2, 46)
{36864, 638976, 1803264, 17210368} (×2)
(2, 5)
{36864, 638976, 1250304, 14998528}

以上より、 タイプ1が 437327360×2+415107584×2+400469504 = 2105339392 通り、タイプ2が 5914031104×2+5828875264 = 17656937472 通りある。 合計を3倍して、求める組合せ数は 59286830592.

全帯五

2枚〜12枚のパターンを列挙し、3色について畳み込む。 パターンは 0, 2, 3, 5, 6, 8, 9, 11, 12 枚について {1, 6, 196, 192, 3336, 556, 8640, 0, 3355} であり、畳み込むと 1099806924.

三同刻

各色で各刻子を使うパターンどうしを畳み込み、字牌とあわせて総組合せ数を求める。 まず、それぞれの刻子を使用するパターンは、ランクごとに3枚から14枚まで求めることができる。 ここで三同刻の成立条件を考えると、必要なのは8枚以下の場合のみである。 その組合せ数は

19
{4, 192, 1680, 56672} (×2)
28
{4, 192, 1440, 48832} (×2)
34567
{4, 192, 1200, 40992} (×5)

以上より、求める組合せ数は 14171136×2+12205056×2+10238976×5 で 103947264.

三暗刻

順子を1つのみ含むものを面子の組合せとして生成し、総数を求める。 四暗刻を含むものは、四暗刻を足すことによって求める。

全不靠

全不靠のみの手と全不靠組合龍の手に分けて求める。 求める組合せ数は101468602368+33822867456で 135291469824.

組合龍

面子手と全不靠組合龍の手に分けて求める。 以下面子手について、ある組合龍を固定して考える。 残り1面子が順子の場合、雀頭牌を4順子で使っている枚数で場合分けして 21*4C19(104C2*4C3+14C1*4C4+234C1*4C22) = 19575865344. 残り1面子が刻子で組合龍に使用されている牌の場合、同様に 9*4C174C4(84C3+254C1*4C2) = 93192192. 残り1面子が刻子で組合龍に使用されていない牌の場合、同様に 25*4C184C3(94C3+244C1*4C2) = 4010803200. 以上より、求める組合せ数は6(19575865344+93192192+4010803200)+33822867456で 175902031872.

大于五・小于五

数牌4種のデータを取る。 全大・全中・全小と同様の書き方をすると、各データは一般 {1, 24, 144, 1440, 1712, 6056, 3448, 3432, 618, 120} 七対 {1, 24, 220, 936, 1734, 936, 220, 24} 複合 {1, 24, 432, 1512, 74, 24} であった。 般2884311816+対266542056-複17366760で、求める組合せ数は 3133487112.

三風刻

残り1面子1対子については、字牌3種・数牌9種3スートのデータを用いて、合計5枚の形を求める。 求める組合せ数は 62115840.

花龍

123を含む数牌組合せ・456を含む数牌組合せ・789を含む数牌組合せ (3枚以上8枚以下) を求めて畳み込み、最後に6倍する。

123/789
{64, 2496, 20296, 515500}
456
{64, 2496, 14216, 380780}

以上より、求める組合せ数は 203069423616.

推不倒

順子を構成可能な牌は筒子の12345と索子の456であり、その他の牌は6種ある。 よって、数牌5種1スート・数牌3種1スート・字牌6種のデータより求める。

数牌5種1スート
一般 {1, 0, 30, 212, 0, 3360, 5176, 0, 39716, 25252, 0, 87092, 29955, 0, 29388} 七対 {1, 0, 30, 0, 365, 0, 2280, 0, 7570, 0, 12276, 0, 7570, 0, 2280} 複合 {1, 0, 30, 0, 0, 0, 648, 0, 5508, 0, 0, 0, 1443, 0, 1356}
数牌3種1スート
一般 {1, 0, 18, 76, 0, 336, 312, 0, 492, 76, 0, 12, 1} 七対 {1, 0, 18, 0, 111, 0, 252, 0, 111, 0, 18, 0, 1, 0, 0} 複合 {1, 0, 18, 0, 0, 0, 216, 0, 108, 0, 0, 0, 1, 0, 0}
字牌6種
一般 {1, 0, 36, 24, 0, 720, 240, 0, 5760, 1280, 0, 23040, 3840, 0, 46080} 七対 {1, 0, 36, 0, 546, 0, 4500, 0, 21615, 0, 59976, 0, 88796, 0, 59976} 複合 {1, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

以上より、求める組合せ数は般920196176+対1105196664-複6377904で、2019014936.

三色三同順

該当役の軸ごとに、その順子を含む組合せ同士を求めて畳み込む。

28
{64, 2496, 20296, 515500} (×2)
37
{64, 2496, 16776, 435820} (×2)
456
{64, 2496, 14216, 380780} (×3)

以上より、求める組合せ数は 37385158656×2+31215599616×2+26764394496×3 で 217494700032.

三色三節高

混一色

数牌と字牌を両方使う組合せ数を、清一色解析字牌解析の出力から求める。

三色三歩高

五門斉

面子手については、数牌・字牌4種字牌3種のデータから2枚を1つ、3枚を4つ取り出して計算する。 七対については、四帰一が1つの場合・2つの場合に分けて計算する。

双箭刻

残り2面子1雀頭については、字牌5種、数牌9種3スートのデータから計算する。 1種あたりで 12752064 通りあり、3倍して重複分の大三元 (3回数えられている) を (2回) 引けば、全体では 5981760.

全帯幺

1,2,3の牌のみの有効な組合せで、全ての組に1牌を含むものを数える。 すると、パターンは 0, 2, 3, 5, 6, 8, 9, 11, 12 枚について {1, 6, 68, 64, 232, 36, 64, 0, 1} となる。 ただし、9枚形については、全帯幺より三暗刻(もしくは四暗刻)にとる方が高いため、これを 0 として畳み込む。 途中計算として、1色の数牌によるパターンは {1, 12, 136, 944, 5088, 11560, 31552, 34592, 53826, 16716} 求める組合せ数は 34679384688.

* 9枚形を0としない場合は34778834160.

箭刻・圏風刻・門風刻

残り3面子1雀頭については、字牌6種、数牌9種3スートのデータから計算する。 求める組合せ数は1種あたりで 74669184 であり、箭刻については3倍して (双箭刻が各2回、大三元が3回数えられている) 双箭刻を (各1回) 引き (大三元が3回引かれる)、大三元を (1回) 足して 234163008.

平和

刻子を含まない組合せを求めて、数牌のみのデータを畳み込む。

四帰一

清一色解析のプログラムを変更して、同一牌を使う枚数が4枚であるような牌が1〜3種あるものについて、データを取る。 七対に関しては別に数え、また、一色四同順の形は引く。

双同刻

三同刻と同様にして求めるが、数牌のうち1つを通常のデータに差し替え、最後に3倍する。

双暗刻

断幺

数牌7種のデータを取る。 結果は一般 {1, 42, 348, 9648, 25976, 412892, 464636, 4162844, 2569621, 12399064} 七対 {1, 42, 763, 7812, 49161, 194166, 470267, 652728} 複合 {1, 42, 1080, 21276, 144149, 442104} であった。 これより断幺の形をみたすすべての和了形の総数を求めると、般899686609236+対10114185204-複322486740 で、求める組合せ数は 909478307700.

一般高

喜相逢

連六

老少副

幺九刻

缺一門

数牌と字牌のデータより計算する。 般7093683926+対2485470330-複19886118 を3倍し、求める組合せ数は28677804414.

无字

数牌3種のデータがそのまま総数となる。 般7140498565560+対76702430304-複970726680 で、求める組合せ数は 7216230269184.