【麻将】计算普通立直麻将规则下配牌的向听数分布列

上一篇博客我们讲到了天和的概率

那下面就有同学问了,亲家有机会两立直的概率是多少啊?

亲家有机会两立直的概率无非就是就是 1414 张配牌听牌型的概率。那我们推广一下,对于 n[1,6]n\in [-1,6],计算配牌 nn 向听的概率

啥是向听数

对于一副 1414 张的手牌,向听数定义为最小的整数 kk 满足这副手牌重复 k+1k+1 次打出一张再摸进一张能和牌。

根据这个定义,和牌为 1-1 向听,听牌为 00 向听。

向听数咋算

向听数只和以下参数有关:

  • 对于一般型:加几张牌能组成一组雀头和四组面子。
  • 对于七对子型:单张牌的种数,数量至少两张的牌的种数。
  • 对于国士型:幺九牌种数,有无重复幺九牌。

暴力

枚举 326520504500326520504500 种本质不同的牌型然后计算向听

真的慢死了,估计要跑几十小时,多线程一下能快点但是还是很慢

也许还能加上奇奇怪怪的对称优化什么的,没试过

优化

考虑对于单独的每种颜色暴力,然后合并信息。那么中间过程需要维护的信息有:

张数,单张牌的种数,数量至少两张的牌的种数,幺九牌种数,有无重复幺九牌,一个 2×42\times4 的数组表示有/无雀头时达到 x[1,4]x\in [1,4] 组面子需要多少加几张牌

维护了这些信息就可以合并了,把这些信息全部一样的牌型都合并到一起,实测合并之后只有几万种不同的情况,计算起来就很快了

我写了一个跑出了下面的表,运行时间在一秒以内

结果

下面的数据类似这个格式:

张数:
  向听数+1: 牌型数 概率

这里列出的概率是分子,分母就是从所有的牌里选这些张的方案数,也就是 C(总张数,张数)

  • 清一色 3636
0:
  14: 1 1
1:
  13: 9 36
2:
  12: 45 630
3:
  11: 165 7140
4:
  10: 495 58905
5:
  9: 1278 376992
6:
  8: 2922 1947792
7:
  7: 6030 8347680
8:
  6: 11385 30260340
9:
  5: 19855 94143280
10:
  4: 32132 254011512
  5: 79 175344
11:
  3: 46721 589227624
  4: 2158 11577672
12:
  2: 54014 1051611684
  3: 15651 200066006
  4: 10 10
13:
  1: 40196 1122505864
  2: 52791 1185398744
  3: 613 2884992
14:
  0: 13277 445632532
  1: 91437 3052344932
  2: 14086 298319736
  • 三色七字136张
0:
  14: 1 1
1:
  13: 34 136
2:
  12: 595 9180
3:
  11: 7140 410040
4:
  10: 66038 13633823
  11: 7 7
5:
  9: 501677 359932188
  10: 231 924
6:
  8: 3257540 7858479090
  9: 3927 60522
7:
  7: 18577515 145941684460
  8: 45815 2622620
8:
  6: 76222773 1363059404703
  7: 19082691 990292546941
  8: 21 21
9:
  5: 198729575 6867277302400
  6: 207965630 17470760716160
  7: 36951075 9131856405120
10:
  4: 325786644 20914691295184
  5: 960084884 133695890405424
  6: 551382284 204380532357824
  7: 63015504 66076545122304
11:
  3: 342358422 41213978044668
  4: 2471064486 597241662641604
  5: 3454679956 2032380504625344
  6: 1203462264 1833787091582976
  7: 86863896 364333586448384
12:
  2: 230390591 52528403814316
  3: 3921946867 1703394553360727
  4: 12162791863 12073061723198458
  5: 9661478625 22950801567481635
  6: 2061951878 12463550486478848
  7: 87914676 1474963508822016
13:
  1: 92371838 39270395383132
  2: 3853879869 3006175115638776
  3: 26789930989 45249205945148216
  4: 44415586270 175141291509958900
  5: 20654119377 192909046305573888
  6: 2655427013 63384201353756672
  7: 60280644 4045365540028416
14:
  0: 16873619 12859078207674
  1: 2133064968 2966241795738948
  2: 35934777211 99154452630748356
  3: 130938507660 828714358375292670
  4: 121685916468 1867404976243926528
  5: 33290266817 1211948980271480832
  6: 2496505635 233501763289743360
  7: 24592122 6601397483077632
  • 两色九字108张
0:
  14: 1 1
1:
  13: 27 108
2:
  12: 378 5778
3:
  11: 3654 204156
4:
  10: 27396 5359086
  11: 9 9
5:
  9: 169650 111468240
  10: 234 936
6:
  8: 902304 1913505984
  9: 3159 48204
7:
  7: 4232358 27881579232
  8: 29484 1638936
8:
  6: 15209658 229941688833
  7: 2847852 122083940502
  8: 36 36
9:
  5: 36932958 1063398510692
  6: 29332476 2025415755064
  7: 3602091 822581616144
10:
  4: 58646169 2968053075334
  5: 132575981 14343498813116
  6: 54254812 17088357593112
  7: 4122648 4322909749248
11:
  3: 61365093 5300533030992
  4: 338412106 57859283205884
  5: 343065680 154125587547280
  6: 83800434 111379122487296
  7: 3891132 16320590512128
12:
  2: 42237317 6132038854792
  3: 541394598 149023257691288
  4: 1208284753 805650741800553
  5: 694898307 1249954434585172
  6: 103196943 540110217412608
  7: 2250612 37759003656192
13:
  1: 17864220 4248510347840
  2: 552121421 243214955934944
  3: 2703243800 2732462104034240
  4: 3178038880 8169994696659840
  5: 1091914759 7581335897696256
  6: 89698182 1820816976642048
  7: 609228 40884598996992
14:
  0: 3544383 1321887397648
  1: 324512039 229204302023024
  2: 3861801145 5666836324035120
  3: 9513954050 35089291127101440
  4: 6280719312 61289092707873792
  5: 1274481820 33570528047677440
  6: 51086370 3878645818982400
  7: 48456 13007308455936

参考资料(日文)

麻雀の数学,http://www10.plala.or.jp/rascalhp/mjmath.htm