想象一下你正坐在桌前,手里握着一枚均匀的六面骰子。你一次次地掷出它,并随手记下当前所有点数的总和:第一掷是
随着投掷次数的增加,这个“点数和序列”在你的笔记本上不断延伸。我们把这个直观的物理过程,提炼为一个正式的数学挑战:
例 1 ( 掷骰子问题 )
将一枚均匀的六面骰子投掷无穷多次, 记录每次投掷的点数, 并将前n次投掷的点数和写成一个递增序列。
(例如前3次点数依次为:
要解决这个概率问题,最暴力的办法是枚举,但数学家们为了更优雅地处理它,发明了一种神奇的工具——母函数。
什么是母函数呢?我们将形式幂级数
称为是序列
如果你觉得“形式幂级数”这个词听起来太冷冰冰,不妨把它想象成一个袋子:
母函数是一种类似于袋子的工具。携带许多零散的小物体可能会令人尴尬,我们将它们全部放入一个袋子中,然后我们只需携带一个对象,那就是这个袋子。 — 乔治·波利亚 (George Pólya), 《数学与合理推理》(1954)
说到底,母函数就是把一串复杂的数列,通过代数运算“打包”进了一个多项式里。下面我们就来看看,这个“袋子”是如何在这个掷骰子问题中大显身手的。
整数分拆:问题的本质
根据题意,点数和序列显然是递增的。因为骰子最小的点数也是
如果数字
如果数字
例 2 ( 拆分 )
10的有序5-拆分总共有多少种情况?(每部分在1到6之间)
在不考虑骰子面值限制的情况下,我们可以用“隔板法”轻松搞定:把
但问题在于,骰子只有
母函数:把组合变成代数
为了处理这种“受限”的拆分,母函数粉墨登场。这听起来很玄妙,但背后的原理其实非常直观。
让我们从最简单的情况看起:假设我们只投掷两次骰子,点数和为 4 的情况有多少种?
直觉告诉我们有 3 种:
现在,让我们把骰子的点数“实体化”为
两次投掷的结果,就隐藏在
当你展开这个乘积式时,为了得到
观察这个过程,你会发现一个惊人的等价性:
- 代数层面的幂指数相加 (
); - 正好对应了物理层面的点数求和 (
)。
在展开过程中,所有能凑成
(对应点数 1 和 3) (对应点数 2 和 2) (对应点数 3 和 1)
这意味着,
这就是母函数最核心的魔力:它把复杂的“数数”问题,降维转化成了纯粹的“代数运算”问题。
以此类推,将一枚骰子投掷
展开后
历史的足迹
这种天才的想法并非偶然。历史上,瑞士数学家雅各布·伯努利在研究掷骰子问题时,就敏锐地察觉到了这种代数与组合的对称性。随后,欧拉在研究自然数分解时奠定了其理论基础。
1812年,拉普拉斯在《概率的分析理论》中系统化了这一工具。正如波利亚所说,母函数让我们不再需要拎着一堆零散的组合情况,而只需提着一个“代数袋子”轻装上阵。
最终的概率计算
现在,我们将概率引入这个“袋子”。掷一次骰子,每个点数出现的概率都是
因为每一次投掷都是相互独立的,所以投掷
回到最初的问题:数字
找到展开式中
延伸与思考
母函数的威力远不止于此。如果我们绘制出前
你会发现一个有趣的现象:出现次数最多的竟然是数字6,概率约为
如果这是一枚“作弊”骰子,掷出
参考文献:
[1] Eureka Issue 62 | A Journal of the Archimedeans

