数学中国

用户名  找回密码
 注册
帖子
热搜: 活动 交友 discuz
查看: 3759|回复: 0

按照概率学原理,你这牌一看就胡不了

[复制链接]
发表于 2021-2-17 23:00 | 显示全部楼层 |阅读模式
按照概率学原理,你这牌一看就胡不了

撰文 | 比邻星

春节要玩好,独乐乐不如众乐乐。

如果要选择一种声音代表新春佳节的团聚,除了噼里啪啦的鞭炮、杯盏相碰的清脆,一句“三缺一”和麻将桌上哗啦啦的搓麻声必定占有一席之地。

麻将在不同段位的玩家眼中代表着不同维度的世界。入门级小白只专注于面前的牌,久经沙场的老手更有大局观,心中装着整个牌桌的乾坤。而在一名理科生眼中,麻将是一场概率游戏和策略博弈。


19世纪的麻将牌长这样丨图源:Wiki

还真有数学家发表了关于“麻将数学”的研究论文,不仅编写程序计算胡牌的概率,更是致力于开发AI打麻将的技能。当然,机器人怎么打麻将倒是后话了,对于各位玩家而言,这些研究最大的价值在于能给麻将桌上的牌局以“专业”的理论指导。

故事还要从清一色讲起。

先补充点背景知识。标准麻将牌包含“筒”、“条”、“万”、“风”和“箭”五套花色,每种牌有4张是相同的。4名玩家初始摸得13张牌,之后按照逆时针摸一张牌再打出一张牌,直到他摸到最后一张牌,14张牌可以凑成23333的排列组合,即为胡牌。


从上到下分别为“筒”、“条”、“万”丨图源:Wiki

用公式表示就是
m*AAA+n*ABC+DD    m,n可以为0

如果最终胡牌的牌面为同一花色,就叫清一色。

一个叫李志光的数学家发现了一种有趣的牌形。


好牌丨图源:Mathematical aspects of the combinatorial game “Mahjong”

仔细看,你会发现下一张只要摸到的也是筒,不管是一筒到九筒中的哪一张,都可以胡牌。这牌,只要一推倒,众人定有不明觉厉之感。

这样的牌形叫“九门”(Nine Gate),李志光随后联想到,类似的“八门”、“七门”、“六门”……都有什么样的牌形,哪种出现的概率更高?

至此开始,一个娱乐问题成功上升为科研课题,行话叫“k门问题”。

用数学符号代表刚才的牌形,那就是

X1X1X1X2X3X4X5X6X7X8X9X9

计算概率,大体的思路就是尝试所有Xi的组合,然后检验每种组合是否符合k门的要求。这样的重复性运算,交给Python程序就够了。


一段源代码截图  网址链接:
https://cklixx.people.wm.edu/mathlib/Mahjong.py

结果是这样的。“九门”的组合有且仅有一种,它出现的概率为0.000113;八门有16种;一门的组合则有14067种,出现的概率是0.148。

k门问题只是个开始,发现能用数学方法研究麻将,另一个团队也跃跃欲试。他们关注到的问题是——如何判断距离胡牌还差几张牌?研究结果整理为论文《来玩麻将啊!》(Let’s play Mahjong!)


都是科研论文,这篇的画风就很可爱

这个问题很实用了,理解了其中奥义,你也能拥有牌局的大局观。来看看他们是怎么算的。

首先需要用数学语言定义每一种牌形。他们选择了一对数字(c, n),c表示花色,0为条、1为万,2为筒;n表示具体的数字。比如(0, 3)就是三条,(1, 5)就是五万。


(2,7)和(2,5) 图源:flicker

接下来设置一段数列V,即14个(c,n)的集合,用来表示完整的牌面。这时你就可以用逻辑语言定义出胡牌(complete)的条件。

最后一步是设计一个变量,定量地表示牌面的好坏。研究者引入了“缺牌数”的定义,也就是距离运算到胡牌状态,还差几张牌。

接下来的运算结果请收好,这是一份科学的打牌秘籍。

基础版——清一色

1. 如果你已经凑出了两个“3连”(包括刻子和顺子),且它们不连续,那么缺牌数小于等于2;

2. 如果你的牌面是以下两种情况之一,那么缺牌数为3
        5个对子+一个杠;
        5个对子+1个刻子+1张单牌

进阶版——多花色

1. 对于任意组合的一副牌,最大缺牌数为6。要置换6张牌才能胡的牌面就是最烂的牌;

2. 如果你的牌面是以下3种情况之一,那么缺牌数小于等于5
         两个不连续的“3连”(包括刻子和顺子);
         一个“3连”和一个“准3连”(只需要碰一下或者吃一个就能凑出刻子或顺子);
        4个“准3连”

面对具体的牌面时,置换麻将牌的方案不止一种,此时需综合考虑缺牌数和胡牌成本,以及方案的可行性。

举个栗子,如果你的牌面是这样的,那么你可以考虑3种搭配方案



先把牌码上,看起来顺眼一些。



第一种方案里,“准3连”B1B3还差一张B2(二条),但是整副牌中已经没有多余的二条,因此这种方案无效。方案二和方案三都是可行的,但是方案三的缺牌数更小,所以更优。

作为中国的经典传统游戏,麻将的玩家覆盖率在整个游戏江湖遥遥领先。不同地区有不同的打法。几分技巧、几分运气,还有好几分的乐趣。这种独特的牌类游戏也慢慢漂洋过海,传入了包括欧美国家在内的世界许多地方。还有研究证实,麻将的益智作用有益于阿尔茨海默病患者。


美国的娃们在课外活动课上学习打麻将丨图源:Wiki

当然,专业的科学家费劲编写程序来还原麻将的游戏规则,初衷倒不是为各位玩家搞一套打牌指南,而是为了开发人工智能。毕竟围棋高手阿尔法狗和阿尔法零相继横空出世,麻将高手机器人也指日可待。


问:图中有几个人在打麻将?丨图源:unsplash

各位麻将高手,你期待和机器人PK的那天吗?

写完此文,考虑到实践是检验真理的唯一标准,小编邻座的小哥默默把家里的麻将牌拿到了公司。

参考资料
1.Yuan Cheng, Chi-Kwong Li, and Sharon H. Li. Mathematical aspect of the combinatorial game “Mahjong”. ArXiv:1707.07345, 2017.
2.Sanjiang Li , Xueqing Yan.  Let’s Play Mahjong! arXiv:1903.03294v1

本文经转载自微信公众号“把科学带回家”。无标注图片来源网络。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

LaTEX预览输入 教程 符号库 加行内标签 加行间标签 
对应的 LaTEX 效果:

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-7-7 13:33 , Processed in 0.086855 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表
\frac{\square}{\square}\sqrt{\square}\square_{\baguet}^{\baguet}\overarc{\square}\ \dot{\baguet}\left(\square\right)\binom{\square}{\square}\begin{cases}\square\\\square\end{cases}\ \begin{bmatrix}\square&\square\\\square&\square\end{bmatrix}\to\Rightarrow\mapsto\alpha\ \theta\ \pi\times\div\pm\because\angle\ \infty
\frac{\square}{\square}\sqrt{\square}\sqrt[\baguet]{\square}\square_{\baguet}\square^{\baguet}\square_{\baguet}^{\baguet}\sum_{\baguet}^{\baguet}\prod_{\baguet}^{\baguet}\coprod_{\baguet}^{\baguet}\int_{\baguet}^{\baguet}\lim_{\baguet}\lim_{\baguet}^{\baguet}\bigcup_{\baguet}^{\baguet}\bigcap_{\baguet}^{\baguet}\bigwedge_{\baguet}^{\baguet}\bigvee_{\baguet}^{\baguet}
\underline{\square}\overline{\square}\overrightarrow{\square}\overleftarrow{\square}\overleftrightarrow{\square}\underrightarrow{\square}\underleftarrow{\square}\underleftrightarrow{\square}\dot{\baguet}\hat{\baguet}\vec{\baguet}\tilde{\baguet}
\left(\square\right)\left[\square\right]\left\{\square\right\}\left|\square\right|\left\langle\square\right\rangle\left\lVert\square\right\rVert\left\lfloor\square\right\rfloor\left\lceil\square\right\rceil\binom{\square}{\square}\boxed{\square}
\begin{cases}\square\\\square\end{cases}\begin{matrix}\square&\square\\\square&\square\end{matrix}\begin{pmatrix}\square&\square\\\square&\square\end{pmatrix}\begin{bmatrix}\square&\square\\\square&\square\end{bmatrix}\begin{Bmatrix}\square&\square\\\square&\square\end{Bmatrix}\begin{vmatrix}\square&\square\\\square&\square\end{vmatrix}\begin{Vmatrix}\square&\square\\\square&\square\end{Vmatrix}\begin{array}{l|l}\square&\square\\\hline\square&\square\end{array}
\to\gets\leftrightarrow\nearrow\searrow\downarrow\uparrow\updownarrow\swarrow\nwarrow\Leftarrow\Rightarrow\Leftrightarrow\rightharpoonup\rightharpoondown\impliedby\implies\Longleftrightarrow\leftharpoonup\leftharpoondown\longleftarrow\longrightarrow\longleftrightarrow\Uparrow\Downarrow\Updownarrow\hookleftarrow\hookrightarrow\mapsto
\alpha\beta\gamma\Gamma\delta\Delta\epsilon\varepsilon\zeta\eta\theta\Theta\iota\kappa\varkappa\lambda\Lambda\mu\nu\xi\Xi\pi\Pi\varpi\rho\varrho\sigma\Sigma\tau\upsilon\Upsilon\phi\Phi\varphi\chi\psi\Psi\omega\Omega\digamma\vartheta\varsigma\mathbb{C}\mathbb{H}\mathbb{N}\mathbb{P}\mathbb{Q}\mathbb{R}\mathbb{Z}\Re\Im\aleph\partial\nabla
\times\cdot\ast\div\pm\mp\circ\backslash\oplus\ominus\otimes\odot\bullet\varnothing\neq\equiv\not\equiv\sim\approx\simeq\cong\geq\leq\ll\gg\succ\prec\in\ni\cup\cap\subset\supset\not\subset\not\supset\notin\not\ni\subseteq\supseteq\nsubseteq\nsupseteq\sqsubset\sqsupset\sqsubseteq\sqsupseteq\sqcap\sqcup\wedge\vee\neg\forall\exists\nexists\uplus\bigsqcup\bigodot\bigotimes\bigoplus\biguplus\bigcap\bigcup\bigvee\bigwedge
\because\therefore\angle\parallel\perp\top\nparallel\measuredangle\sphericalangle\diamond\diamondsuit\doteq\propto\infty\bowtie\square\smile\frown\bigtriangledown\triangle\triangleleft\triangleright\bigcirc \wr\amalg\models\preceq\mid\nmid\vdash\dashv\nless\ngtr\ldots\cdots\vdots\ddots\surd\ell\flat\sharp\natural\wp\clubsuit\heartsuit\spadesuit\oint\lfloor\rfloor\lceil\rceil\lbrace\rbrace\lbrack\rbrack\vert\hbar\aleph\dagger\ddagger

MathQuill输入:

Latex代码输入: