上一篇博客我们讲到了天和的概率。
那下面就有同学问了,亲家有机会两立直的概率是多少啊?
亲家有机会两立直的概率无非就是就是 张配牌听牌型的概率。那我们推广一下,对于 ,计算配牌 向听的概率
啥是向听数
对于一副 张的手牌,向听数定义为最小的整数 满足这副手牌重复 次打出一张再摸进一张能和牌。
根据这个定义,和牌为 向听,听牌为 向听。
向听数咋算
向听数只和以下参数有关:
- 对于一般型:加几张牌能组成一组雀头和四组面子。
- 对于七对子型:单张牌的种数,数量至少两张的牌的种数。
- 对于国士型:幺九牌种数,有无重复幺九牌。
暴力
枚举 种本质不同的牌型然后计算向听
真的慢死了,估计要跑几十小时,多线程一下能快点但是还是很慢
也许还能加上奇奇怪怪的对称优化什么的,没试过
优化
考虑对于单独的每种颜色暴力,然后合并信息。那么中间过程需要维护的信息有:
张数,单张牌的种数,数量至少两张的牌的种数,幺九牌种数,有无重复幺九牌,一个 的数组表示有/无雀头时达到 组面子需要多少加几张牌
维护了这些信息就可以合并了,把这些信息全部一样的牌型都合并到一起,实测合并之后只有几万种不同的情况,计算起来就很快了
我写了一个跑出了下面的表,运行时间在一秒以内
结果
下面的数据类似这个格式:
张数:
向听数+1: 牌型数 概率
这里列出的概率是分子,分母就是从所有的牌里选这些张的方案数,也就是 C(总张数,张数)
- 清一色 张
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