把组合问题装进口袋:母函数与掷骰子

2026-06-04 数学科普 ← 返回栏目

想象一下你正坐在桌前,手里握着一枚均匀的六面骰子。你一次次地掷出它,并随手记下当前所有点数的总和:第一掷是 ,总和是 ;第二掷是 ,总和变成了 ……

随着投掷次数的增加,这个“点数和序列”在你的笔记本上不断延伸。我们把这个直观的物理过程,提炼为一个正式的数学挑战:

例 1 ( 掷骰子问题 )

将一枚均匀的六面骰子投掷无穷多次, 记录每次投掷的点数, 并将前n次投掷的点数和写成一个递增序列。 (例如前3次点数依次为:, 则点数和序列为:) 问:在所有可能的点数和序列中, 数字10出现的概率是多少?[1]

整数分拆:问题的本质

根据题意,点数和序列显然是递增的。因为骰子最小的点数也是 ,所以数字 最多只能出现在序列的前 位中(如果前 次全是 )。

如果数字 恰好出现在第 位,这意味着前 次掷骰子每次的点数都必须是 。根据独立事件积的概率公式,这个概率是 。

如果数字 出现在第 位,这说明前 次投掷的点数和恰好是 。这在数学中被称为整数分拆问题——即将一个正整数表示为若干个正整数的和.

例 2 ( 拆分 )

10的有序5-拆分总共有多少种情况?(每部分在1到6之间)

在不考虑骰子面值限制的情况下,我们可以用“隔板法”轻松搞定:把 个球分成 份,每份至少 个,方案数是 。

但问题在于,骰子只有 到 点。如果拆分中出现了 (比如 这种 拆分),传统的隔板法就开始变得捉襟见肘了。

简答题
解决以下问题

既然组合学里的“隔板法”搞不定骰子的点数上限,我们需要跨界去“代数”的世界里搬救兵。请凭直觉猜一猜:如果不考虑点数上限,如果你只能使用初中代数里学过的一种运算,来自动替我们枚举“投掷两次骰子,和为 4”的所有组合方案,你觉得哪种运算的底层逻辑和它最像?A. 对数运算 B. 多项式乘法 C. 求解二次方程

    思考完成后,点击查看答案.

    没错,正是“多项式乘法”。

    在概率论发展的早期,像雅各布·伯努利这样的先驱,凭借着惊人的脑力和严密的逻辑,通过纯粹的组合推理解释了掷骰子中的复杂概率。然而,面对几百次投掷的规模,组合计算量是人力难以承受的。

    直到后来,棣莫弗和欧拉引入了一种极其优雅的新视角:为什么不让“代数”来帮我们分担“组合”的压力呢? 让我们来看看,这个精妙的代数思维是如何运作的。

    母函数:把组合变成代数

    为了处理这种“受限”的拆分,让我们从最简单的情况看起:假设我们只投掷两次骰子,点数和为 4 的情况有多少种?

    直觉告诉我们有 3 种:。

    现在,让我们把骰子的点数“实体化”为 的幂次:点数 对应 ,点数 对应 ……以此类推。那么一次投掷的所有可能可以用多项式表示为:

    两次投掷的结果,就隐藏在 的展开式中:

    当你展开这个乘积式时,为了得到 项,你必须从第一个括号选一项 ,从第二个括号选一项 ,使得它们的乘积 。

    观察这个过程,你会发现一个惊人的等价性:

    • 代数层面的幂指数相加 ();
    • 正好对应了物理层面的点数求和 ()。

    在展开过程中,所有能凑成 的方式都会被加在一起:

    • (对应点数 1 和 3)
    • (对应点数 2 和 2)
    • (对应点数 3 和 1)

    这意味着, 前面的系数就是这 3 种情况的总和。多项式的乘法运算,在指数位置上自动完成了所有可能的组合枚举,并在系数位置上帮我们做好了加法。

    这就是大名鼎鼎的母函数(Generating Function)。 这种把复杂的“数数”问题,降维转化成代数多项式的魔法,其正式的数学面貌是形式幂级数 。在这个式子里, 就是存放数字的容器, 就是我们在乎的点数,而前面的系数 就是最终的方案数。

    如果你觉得“形式幂级数”这个词听起来太冷冰冰,不妨把它想象成一个袋子:

    母函数是一种类似于袋子的工具。携带许多零散的小物体可能会令人尴尬,我们将它们全部放入一个袋子中,然后我们只需携带一个对象,那就是这个袋子。 — 乔治·波利亚 (George Pólya), 《数学与合理推理》(1954)

    以此类推,将一枚骰子投掷 次,所有可能的点数和分布都被“打包”在了母函数的 次幂中:

    展开后 项的系数,就是掷骰子 次后点数和为 的所有可能方案数。不论是限制点数在 1-6 之间,还是要求点数必须是偶数,我们只需要调整括号内多项式的项,母函数就能自动帮我们处理这些复杂的约束条件。

    最终的概率计算

    现在,我们将概率引入这个“袋子”。掷一次骰子,每个点数出现的概率都是 ,其概率母函数为:

    因为每一次投掷都是相互独立的,所以投掷 次的概率分布就由 给出。

    回到最初的问题:数字 出现在序列中的总概率是多少?它可能出现在第 位、第 位……直到第 位。因此,我们只需要计算下面这个多项式之和:

    找到展开式中 项的系数。经过计算,这个概率约为 。

    延伸与思考

    母函数的威力远不止于此。如果我们绘制出前 个数字出现在序列中的概率图:

    你会发现一个有趣的现象:出现次数最多的竟然是数字6,概率约为。随着数字变大,概率逐渐趋于稳定(约 )。

    如果这是一枚“作弊”骰子,掷出 的概率特别大,那么上述概率分布图会发生怎样的偏移?数字 出现的概率会增加还是减少?

    参考文献:

    [1] Eureka Issue 62 | A Journal of the Archimedeans

    内容来源:橘子数学(原文链接)
    上一篇
    山羊与栅栏:绳索尽头的几何博弈