麻将数据分析
一、规则介绍
本文选择通用的麻将规则,并且没有东南西北风,总共120张牌。数据来源为4个AI麻将循环对局一万场的所有明细数据,AI程度采用的是一般人基本的打牌思路:有碰就碰;能胡即胡,不贪大的;出牌优先级依次为单张无靠、单张有靠和非单张。
二、数据分析
玩家 | 胡牌场数 | 占比% | 点炮场数 | 占比% |
---|---|---|---|---|
E | 2447 | 24.47 | 1834 | 18.34 |
S | 2405 | 24.05 | 1822 | 18.22 |
W | 2496 | 24.96 | 1788 | 17.88 |
N | 2426 | 24.26 | 1856 | 18.56 |
黄庄 | 226 | 2.26 |
这是各玩家的胡牌和点炮场数及概率,从结果来看,完全符合大数定律。也就是在四个玩家技术水平相同的情况下,游戏场数进行到足够多时,每个玩家的胡牌概率接近一致。
胡牌方式 | 胡牌场数 | 占比% |
---|---|---|
多门听 | 3982 | 39.82 |
自摸 | 2474 | 24.74 |
对倒听 | 1393 | 13.93 |
一门听 | 1390 | 13.9 |
单钓 | 535 | 5.35 |
黄庄 | 226 | 2.26 |
其中对倒听能胡的牌只有四张,分别是两个对子的另外两张。一门听能胡的也只有四张,比如边七万,总共4个七万,理论上分析概率应该是相近的,跟这个数据结果相符。而单钓能胡的牌最多只剩3张,所以是最难胡的
万牌 | 点炮场数 | 饼牌 | 点炮场数 | 条牌 | 点炮场数 | 牌 | 点炮场数 |
---|---|---|---|---|---|---|---|
一万 | 227 | 一饼 | 188 | 一条 | 173 | 红中 | 23 |
二万 | 348 | 二饼 | 270 | 二条 | 244 | 白板 | 23 |
三万 | 359 | 三饼 | 348 | 三条 | 292 | ||
四万 | 355 | 四饼 | 334 | 四条 | 332 | ||
五万 | 384 | 五饼 | 386 | 五条 | 364 | ||
六万 | 352 | 六饼 | 349 | 六条 | 288 | ||
七万 | 386 | 七饼 | 295 | 七条 | 305 | ||
八万 | 280 | 八饼 | 234 | 八条 | 167 | ||
九万 | 124 | 九饼 | 118 | 九条 | 105 |
每张牌点炮的场数,明显看出越靠近中间点炮概率越高,越靠边概率越低,而靠不上牌的中白概率最低。
其它指标 | 场数 | 概率 |
---|---|---|
门清次数 | 2794 | 28.59 |
上碰下自摸次数 | 228 | 9.21 |
胡七对的情况 | 14 | 0.14 |
全求人次数 | 5 | 0.05 |
另外平均每场抓牌数量是35张,刚刚过半,再平均到每人则是8到9张,而第19到45张是胡牌高峰范围。
三、深度分析
根据麻将游戏规则,点炮的情况下,只有点炮的一个人出钱。而自摸则是另外三家都出钱。那么如果从代码上设定玩家E不自摸不胡,最终结果能否多赢钱呢。结果如下:
玩家 | 胡牌场数 | 占比% | 点炮场数 | 占比% |
---|---|---|---|---|
E | 545 | 5.45 | 2230 | 22.3 |
S | 2835 | 28.35 | 1549 | 15.49 |
W | 3056 | 30.56 | 1541 | 15.41 |
N | 3154 | 31.54 | 1599 | 15.99 |
黄庄 | 150 | 1.5 |
从数据看,玩家E在这个策略下,最终仅胡了545场。而常规情况下,根据前面的数据,自摸总场数为2474,平均每人就是618.5场。为什么只胡自摸的情况下,最后反而自摸的更少呢?
我觉得可能存在两个方面的原因,一个是当有人点炮时,玩家E不能胡,由于减少了一张能自摸的牌,后面自摸的概率越来越低;一个是作为庄家的场数大量减少,失去庄家优先抓牌的优势,从而减少了原有的自摸概率。
下面进一步分析庄家的胡牌概率:
类型 | 场数 | 占比% |
---|---|---|
庄家 | 2764 | 28.08 |
闲家 | 7081 | 71.92 |
如果4个玩家胡牌的概率相等,那么应该分别是25%,而庄家达到了28%。说明庄家确实有点略微的优势。当然,本人的分析不一定准确,试验的数据场数可能还不够多,代码也有可能有bug。如若发现明显错误,欢迎分享交流。
四、补充
关于麻将的打牌技巧,众多麻将高手有很多自己的心得。比如3和7尽量不打,因为有了3和7就能靠上1到9所有的牌;再比如后半场如果牌太丑了就可以选择弃胡,随便拆牌找最安全的打,以保证不点炮。而采用AI麻将加数据分析的方式,可以从数据上进行验证,从而进一步改善代码的智能程度。
人机麻将实现方式参考:https://blog.csdn.net/usshe/article/details/108015618