排列组合

对比计算

下载

包含本次计算的输入与结果,以及您对比过的所有附加计算。

计算从一组项目中排列和选取的方式数

排列(nPr)计算的是从 n 个项中排列 r 个项(顺序重要)的方式数,而组合(nCr)计算的是从 n 个项中选择 r 个项(顺序不重要)的方式数。 输入总项数(n)和您要选取的项数(r),此计算器会同时计算出这两个相关的答案。

计算公式

  • 排列: P(n,r)=n!(nr)!P(\vA{n}, \vB{r}) = \frac{\vA{n}!}{(\vA{n} - \vB{r})!} — 等价于从 n\vA{n} 开始的 r\vB{r} 个递减数字的乘积: n×(n1)××(nr+1)\vA{n} \times (\vA{n}-1) \times \cdots \times (\vA{n}-\vB{r}+1)
  • 组合: C(n,r)=P(n,r)r!C(\vA{n}, \vB{r}) = \frac{P(\vA{n}, \vB{r})}{\vB{r}!} — 与排列数相同,除以那 r\vB{r} 个项自身可能重新排列的 r!\vB{r}! 种方式(因为组合中顺序不重要)。

举例说明

从一组 10 个项中选择 3 个,顺序重要(排列):

P(10,3)=10×9×8=720P(10,3) = 10 \times 9 \times 8 = 720

同样的选择,顺序不重要(组合):

C(10,3)=720÷3!=720÷6=120C(10,3) = 720 \div 3! = 720 \div 6 = 120

真实案例验证

在一个「6 选 49」的彩票开奖中,匹配全部 6 个号码的概率是 C(49,6) 分之一 — 恰好为 13,983,816 — 因为号码抽取的顺序不会改变您是否中奖。

需要考虑的关键因素

  • 顺序是否重要是决定该用哪个公式的唯一关键问题。 将获奖者排列在领奖台上(第一、第二、第三名的顺序很重要)属于排列问题,而挑选哪 3 个人组成委员会(不涉及排名)则属于组合问题 — 正确区分这一点,是应用这些公式时最常见的出错来源。
  • 在相同的 n 和 r 下,组合数总是小于或等于排列数。 由于组合会把同一组 r 个项的所有可能排列方式都归并为一次计数,所以 C(n,r) 始终等于 P(n,r) 除以 r!— 只有当 r 为 0 或 1 时,两个值才会完全相等,因为 0 个或 1 个项无论顺序如何都只有一种排列方式。
  • 随着 n 和 r 增大,排列数和组合数都会急剧膨胀。 这种爆炸式增长(称为组合爆炸)正是彩票式赔率会随着抽取号码数量小幅增加而变得如此天文数字般渺茫的原因 — 例如从「6 选 49」的彩票变为「6 选 59」的彩票,仅仅是号码池增加了 10 个,中奖几率却会明显变差。
  • 这些公式假设每个项都是唯一的,且每个项最多只能被选一次。 允许重复选择的场景(例如可以重复数字的 4 位 PIN 码)需要使用完全不同的计数公式 — 在套用这里的标准 nPr/nCr 公式之前,请务必先确认是否允许重复。

常见错误

  • 在顺序其实并不重要时使用排列数,或反之。 这是最常见的错误——在选择公式之前,务必先问自己交换两个选定项目是否会算作不同结果,而不要根据题目措辞来猜测。
  • 忘记在相同的 n 和 r 下,组合数永远不会大于排列数。 如果对于相同的输入,组合数算出来比对应的排列数还大,说明输入有误——组合是把排列数除小,而绝不会把它放大。
  • 将这些公式套用到允许重复选择的情形上。 这两个公式都假设每个项最多只能被选一次——允许重复的问题(例如生成一个 4 位 PIN 码)需要完全不同的计数方法,而不是 nPr 或 nCr。

实用小知识

  • 想要实际计算某个特定结果的概率,而不仅仅是数出可能性的数量?概率计算器 可将组合数或排列数转换为实际概率。
  • 正在处理一整套数据,而不只是数排列方式?统计计算器 可根据一列数字计算平均值、标准差和其他汇总数据。
  • 需要在相关的组合数学问题中化简比例或求公分母?最大公因数与最小公倍数计算器 可求出一组数字的最大公因数和最小公倍数。

来源: 维基百科:组合(及排列).

常见问题

排列和组合有什么区别?

排列计算的是顺序重要的排列方式 -- 即使是同样的三名选手,比赛中的第一、第二、第三名也是不同的结果。组合计算的是顺序不重要的选择方式 -- 无论先选出谁,3 人委员会都是同一个组合。

我的问题应该使用哪一个?

问问自己,交换所选项的顺序是否会被视为不同的结果。如果是(比如将书籍排列在书架上,分配第一、第二、第三名),使用排列。如果不是(比如挑选一个团队、选彩票号码、选出一个委员会),使用组合。

为什么 n 的大小有限制?

排列数和组合数的增长速度极快 -- 即使是中等大小的 n,n! 也会产生远超 JavaScript 数字类型精确表示范围的数值。此计算器将 n 上限设为 1000,以保证结果有意义,而不是悄悄返回一个不精确或无穷大的值。

确认您的年龄

为了创建账户,请告诉我们您的出生月份和年份。