排列数计算器
结果
排列数(计顺序)
- 组合数(不计顺序)
- 120
排列数计算器回答的是一个计数问题:从 n 个不同的东西里取 r 个,在顺序算数的情况下有多少种取法?它把这个数印出来,并在旁边印出不计顺序时的同一个计数——组合数——于是两行之间差的正好是顺序带来的那个因子。那个因子就是 r 的阶乘:任意 r 个被取出的东西都能排出 r! 种顺序,所以排列数永远是两行里大的那个,而在 r = 1 时两行相等。只要位置与成员不是一回事,这个区分就有意义:一场比赛的前三名与「哪三个人进了前三」是两个不同的问题,密码是排列,而彩票开奖是组合。把开关拨到允许重复时,整个算法会换一套,因为放回抽取把计数从下降乘积变成了幂,而且 r 到那时不再受池子大小限制。凡是位置有区别的场合都用得上它:登台领奖的名次、发牌的顺序、密码与车牌,以及任何「换两个位置就是另一个结果」的清单;一张座位安排表就是最日常的例子。
公式
排列数 P(n, r) = n! / (n − r)! = nPr · 组合数 C(n, r) = n! / (r!(n − r)!) · P(n, r) = C(n, r) · r!
- n
- 池子的大小——一共有多少种不同的东西可以取,最多 1000。这个上限限制的是算术而不是想法:计数随着 n 增长得极快,过了某一点准确值就不再落在这一页能精确表示的整数范围里
- r
- 实际取出几个。不重复时它不能超过 n,因为不可能取出比存在更多的不同东西;一旦允许重复,r 就可以更大,只受「这一页还能精确算到多大的幂」限制
- n!
- n 的阶乘:n 乘以它下面的每一个整数直到 1。它是把所有东西按顺序取走的计数,也正是除以 (n − r)! 要减掉的那一段
- P(n, r)
- 排列数:第一个位置有 n 种选择,第二个剩 n − 1 种,如此取 r 个位置。这个乘积 n × (n − 1) × … × (n − r + 1) 就是公式里的 n! / (n − r)!
- C(n, r)
- 不计顺序的计数,印在第二行。它把排列数除以 r!,也就是任意一组被选出的东西自己能排出的顺序数——两行之间的全部差别就在这一除
- allowRepetition
- 页面处在两套规则中的哪一套。允许重复时计数变成 n 的 r 次方,因为 r 次取用中每一次都重新面对整个池子;不计顺序那一行则换成多重集的计数
位置有区别时用它:比赛的名次、发出的前三张牌的顺序、密码或车牌、任何换两个位置就是另一个结果的清单。结果是「一组人」时用组合那一行——或者用这一对页面里的另一页——因为那时 r 个东西的两种排法给出同一个答案,而除以 r! 正好就是这个修正。东西取走之后还能再取时打开重复开关:四位密码有 10⁴ 种,因为每一位都是从十个数字里重新取的,而彩票摇出的球不含重复。另外,即使你是冲着第一行来的,也读一眼第二行:两个计数放在一起,是「顺序到底为什么重要」最清楚的说明,因为它们只差一个因子。至于计顺序还是不计顺序,先问一句「把取出的两个东西换个位置,结果会不会变」——会变就是排列,不会变就是组合。
算例
十个里取三个:排列 720 种,组合 120 种
- 第一个位置有十种选择,第二个剩九种,第三个剩八种
- 相乘:10 × 9 × 8 = 720 种排列
- 不计顺序时除以 3! = 6,得 120 种组合
- 720 / 120 = 6,正好是 3!
两行并排就是这一页存在的理由:同样十个东西、同样取三个,计顺序是 720,不计顺序是 120,而两者之比是 3!——也就是三个被取出的东西能排出的顺序数。每当排列与组合看起来对不上,把两个数相除就是最快的检查:商不是某个阶乘,问题就出在题目的设定上,而不是算术上。
八名选手争三个名次
- 冠军有八种可能,亚军剩七种,第三名剩六种
- 8 × 7 × 6 = 336 种填满领奖台的方式
- 不计顺序时,同样这三个人无论怎么排都是同一组:336 / 6 = 56
- 换个算法验算:8!/(8−3)! = 40320/120,同样是 336
这是这个区分最日常的样子:比赛结果是一个排列,因为银牌不是金牌;而「谁晋级」是一个组合,因为晋级的三个人不论谁跑得最快都是这三个人。也留意同一对数字会以两行互换的样子出现在组合数那一页——那是这一对页面在按设计工作,不是内容重复。
按顺序发五张牌
- 第一张牌有 52 种选择,第二张 51 种,一直到第五张 48 种
- 52 × 51 × 50 × 49 × 48 = 311,875,200 种有序发法
- 一手五张牌不计顺序,所以除以 5! = 120
- 311,875,200 / 120 = 2,598,960——扑克牌里那个熟悉的数字
2,598,960 是所有扑克牌概率都要除的那个分母,所以这一格是读者能拿别处见过的数字来对账的地方。它也是最清楚地显示顺序因子有多大的一格:同样五张牌换个次序就是另一种有序发法,却是同一手牌,而两个计数之间的因子是 120 而不是 6。这里的两个计数都是精确值,没有取整。
允许重复的三位数字码
- 允许重复时,三个位置各自独立地从十个数字里取
- 10 × 10 × 10 = 1000 种数字码
- 不计顺序那一行不再是 1000 / 6,因为像 777 这样的码并没有六种不同的排法
- 它换成多重集的计数:C(10 + 3 − 1, 3) = C(12, 3) = 220
这一格有意思的是第二行。东西互不相同时,不计顺序的计数就是排列数除以 r!,但一旦允许重复,这一除就过头了——777 只有一种排法而不是六种——所以页面换了公式而不是继续除。220 是十个数字取三个的多重集个数,也正是这个开关会同时改动两行、而不只是第一行的原因。
局限
两条边界是被拦住而不是被解释掉的,而在数字让你意外之前,两条都值得知道。不允许重复时 r 不能超过 n:从三个不同的东西里取四个,不是一个小概率事件,而是一个做不到的请求,页面会直接指出来,而不是返回 0。池子大小上限是 1000。真正会在实践中撞上的是第二条:排列数是一个增长极快的乘积,而这一页印的是精确整数,不是用科学记数法表示的近似值。过了真实值不再能被精确表示的那条线,它会拒绝作答,而不是印一个末尾几位是错的整数——在这里,一个看起来合理的错数远比一句明确的拒答糟糕,因为那个错数会被抄进依赖它的地方。重复那一支还有一个更小的算术上限:那里的计数是幂,指数很大时同样会溢出。还有两点关于含义。这里两行都不是概率,都是等可能排法的计数;要把计数变成概率,得再除以可能性的总数,而那个总数取决于过程,不取决于这一页上的这对数。另外,这一页没有阶乘、二项式系数或帕斯卡三角的参考表,理由见下面第 5 条问答。
常见问题
- 排列数和组合数有什么区别?
- 排列数计排列,组合数计集合:把选中的两个东西换一下,对排列来说是另一个结果,对组合来说不是。这一页把两个数一起印出来,是为了让这层关系看得见而不是只靠一句话——排列数永远是大的那个,把它除以 r 的阶乘就得到另一行。实践中要问的是位置有没有含义。如果第三个位置与第二个不同,比如比赛名次或按顺序发出的牌,你要的是排列数;如果选中的几个东西可以互换,你要的是组合数。
- 为什么两行正好差 r 的阶乘?
- 因为任意 r 个被选出的东西都能排出 r! 种先后,而排列数把每一种先后都算作一个不同的结果。取 r = 3,任意三个东西都能排出六种顺序,所以一种组合对应六种排列,排列数就是组合数的六倍。这也是最快的验算方式:把两行相除,商应该是一个阶乘。如果不是,问题出在设定而不是算术上——最常见的是池子大小或重复开关与实际描述的情形不符。
- 什么时候同一个东西取两次算两种结果?
- 恰好是在情形允许它被取两次的时候——那正是重复开关控制的事,而它会同时改动两行,不只是第一行。四位密码每一位都从十个数字里重新取,所以 0000 之类的重复是普通结果,计数是 10⁴;而彩票是把球从桶里拿出来,所以没有号码能出现两次,计数是下降乘积。允许重复时,组合那一行不再是排列数除以 r!,因为像 777 这样的取法只有一种排列而不是六种,页面会把那一行换成多重集的计数。
- 为什么页面拒绝取走比池子里更多的东西?
- 不许重复时,r 比 n 大描述的是一个做不到的过程:只有三个东西可用的时候,第四个不同的东西并不存在。页面把这个矛盾报出来,而不是返回 0,因为 0 在别的设定下是一个合法的计数,会被当成一个答案读走。把重复打开,同一个请求就变得再普通不过——三个东西每次取一个、连取五次且允许重复,是 3⁵ = 243 种排列——所以这条限制长在两个设定的组合上,而不是长在 r 单独身上。
- 为什么这一对页面上都没有帕斯卡三角或阶乘表?
- 因为这里放一张表看不到你填的那两个数,而人们想要的表——阶乘、二项式系数、帕斯卡三角的各级——是固定小值的一张清单。真放上去,它回答的就是与上面面板不同的问题,有时还会当着人的面和你看的那一行矛盾,那比没有表更糟。面板就是那张表:改 n、改 r、拨一下重复开关,两行都会重算。这一对页面和别的计数工具给出的是同一个判断,而不是一页给表、另一页不给,因为这两页本来就是同一个问题的两个方向。
- 为什么池子大了就不给答案了?
- 因为排列数是长长一串整数连乘出来的乘积,而它越过这一页能精确表示的最大整数,比大多数人预想的早得多——19 的阶乘就已经越过了,尽管它只有 18 位数字,看起来并不吓人。过了那一点,页面会拒绝作答,而不是印一个末尾几位是错的数,而那些位数恰恰是一个精确计数的全部价值所在:一个错的整数看起来完全普通,还会被抄进依赖它的计算里。池子上限 1000 是围绕同一件事的另一道、更松的防线——它是在算术还值得一试的规模上把输入拦住。
参考资料
- GB/T 3358.1-2009《统计学词汇及符号 第1部分:一般统计术语与用于概率的术语》(推荐性国家标准,现行:2009-10-15 发布 / 2010-02-01 实施,采标;该站注明因涉及国际版权不提供在线阅读,全文需另寻) — 国家市场监督管理总局 国家标准全文公开系统
- Permutation — from Wolfram MathWorld(英文原版;把有序列表里的元素重新排布,以及给定规模时排法的计数——本页主结果那一行的定义) — Wolfram MathWorld
- Combination — from Wolfram MathWorld(英文原版;从一堆东西里取若干个而不计顺序的取法数,也叫二项式系数,读作「n 选 k」——本页第二行的定义) — Wolfram MathWorld
- 1.3.6.1. What is a Probability Distribution — e-Handbook of Statistical Methods(英文原版;把概率读成「占多少份」的频率解释,也就是把「等可能排法的计数」变成概率的那一步) — 美国国家标准与技术研究院(NIST)