什么是可重复组合?
可重复组合用来计算:在允许同一类型被多次选取、且不考虑选取顺序的情况下,从 n 种不同类型中选出 r 个元素,一共有多少种不同的方案。这个数量通常记作 nHr,在数学中也称为多重集系数(multiset coefficient)。它能回答类似这样的问题:「有 4 种口味的冰淇淋,挖 2 球、允许重复,一共能搭配出多少种不同的组合?」
如何使用本计算器
填入不同类型的数量 n(至少为 1),以及你要选取的元素个数 r(可以为 0 或更大)。点击计算,工具就会返回 nHr,也就是不同多重集的精确数量。两个输入都是普通的非负整数,无需做任何单位换算。
公式详解
核心恒等式为 $$\overline{C}(n,r) = \binom{n + r - 1}{r} = \frac{\left(\text{Types }(n) + \text{Choose }(r) - 1\right)!}{\text{Choose }(r)!\,\left(\text{Types }(n) - 1\right)!}$$ 其中的巧思在于:把 r 个要选取的元素与 n - 1 个用来分隔各类型的「隔板」排成一列,共得到 n + r - 1 个位置,再从中选定哪些位置放元素(或隔板)即可。为避免计算庞大的阶乘,本计算器采用稳定的连乘循环来求二项式系数:对 \(i = 1..k\),依次乘以 \((m - k + i)\) 再除以 \(i\),其中 \(m = n + r - 1\),\(k = \min(r, n - 1)\)。
实例演算
以默认值 n = 4、r = 2 为例:$$nHr = C(4 + 2 - 1, 2) = C(5, 2) = \frac{5 \cdot 4}{2 \cdot 1} = 10$$ 从类型 {a, b, c, d} 中得到的十种组合为:aa、ab、ac、ad、bb、bc、bd、cc、cd、dd。
常见问题
它和普通组合有什么区别? 普通组合 \(C(n, r)\) 不允许重复,每个元素最多只能选一次;而这里允许重复,因此得到的方案数更多。
如果 r = 0 会怎样? 此时恰好只有一种组合,即「什么都不选」的空集,所以 \(nHr = 1\)。
如果 n = 1 会怎样? 只有一种类型时,你只能把它选取 r 次,因此对任意 r 都只有一个多重集,\(nHr = 1\)。