排列组合计算器
输入元素总数 n 与选取个数 r,一键计算排列数 A(n,r)=n!/(n−r)!(讲顺序)与组合数 C(n,r)=n!/(r!(n−r)!)(不讲顺序),并给出可重复排列 n^r 与可重复组合 C(n+r−1,r);BigInt 精确大数计算,附公式、位数与科学计数法。
从中挑选的元素总个数,非负整数(n ≤ 10 亿)。
要取出的个数,非负整数(r ≤ 10000)。
排列讲顺序、组合不讲顺序:A(5,2) 把顺序不同视为不同方案,C(5,2) 则把它们算作同一种。 二者关系为 A(5,2) = C(5,2) × 2!。「可重复」表示同一元素允许被多次选中。 结果用大整数(BigInt)精确计算,位数过多时先给出科学计数法。
怎么用
- 填元素总数 n:在「n」框填要从中挑选的元素总个数(如一副 52 张牌就填 52,双色球红球 33 就填 33)。n 为非负整数。
- 填选取个数 r:在「r」框填要取出多少个(如从 52 张里取 5 张就填 5)。r 为非负整数;当 r > n 时不可重复的排列/组合为 0。
- 读排列数与组合数:工具立即给出排列数 A(n,r)=P(n,r)=n!/(n−r)!(讲顺序)与组合数 C(n,r)=n!/(r!(n−r)!)(不讲顺序)。数值用大整数精确计算,超大结果先显示科学计数法,并附完整精确值与位数。
- 按需看可重复情形:若同一元素允许重复选取(如密码、掷骰子),再看「可重复排列 n^r」与「可重复组合 C(n+r−1,r)」两行。选「讲不讲顺序 × 能不能重复」四种组合,对号入座即可。
核心要点
排列组合计算器按标准公式计算从 n 个中取 r 个的方案数,用大整数精确运算。
- 排列(讲顺序):
A(n,r) = P(n,r) = n!/(n−r)!,如A(5,2)=20。 - 组合(不讲顺序):
C(n,r) = n!/(r!(n−r)!),如C(5,2)=10。 - 关系:
A(n,r) = C(n,r) × r!、C(n,r) = C(n,n−r)。 - 可重复:可重复排列
n^r、可重复组合C(n+r−1,r)。 - 精确大数:BigInt 计算,如
C(52,5)=2598960、C(49,6)=13983816。 - 边界:
C(n,0)=A(n,0)=1、C(n,n)=1;不可重复时r>n结果为 0。 可重复组合通式C(n+r−1,r)适用于n>0,n=r=0视为空集特例(结果记为 1)。
原理与公式
从 n 个不同元素中取出 r 个,按「是否讲顺序、是否允许重复」分为四种计数, 本工具全部同时给出(n、r 均为非负整数,且不可重复情形要求 r ≤ n)。
排列数 A(n,r):讲顺序、不重复
A(n,r) = P(n,r) = n!/(n−r)! = n × (n−1) × … × (n−r+1),即从 n 起连乘 r 个递减的数。例如给 5 个人排前 2 名:A(5,2) = 5 × 4 = 20。取满时 A(n,n) = n!(全排列)。
组合数 C(n,r):不讲顺序、不重复
C(n,r) = n!/(r!(n−r)!) = A(n,r)/r!,也记作 ₙCᵣ、 「n 取 r」,即二项式系数。例如从 5 个里选 2 个(不分先后):C(5,2) = 20/2! = 10。有对称性 C(n,r) = C(n,n−r), 边界 C(n,0) = C(n,n) = 1。
可重复的两种
若同一元素可被重复选取:可重复排列(讲顺序)为 n^r——每个位置都从全部 n 个里选,如 4 位数字密码 10^4 = 10000 种;可重复组合(不讲顺序)为 C(n+r−1, r)——由「隔板法(stars and bars)」推得,如从 3 种口味买 2 支:C(4,2) = 6 种。
四种情形一览
讲顺序·不重复 → A(n,r)=n!/(n−r)!;不讲顺序·不重复 → C(n,r)=n!/(r!(n−r)!);讲顺序·可重复 → n^r; 不讲顺序·可重复 → C(n+r−1,r)。判断时先问「顺序算不算不同」, 再问「同一元素能不能重复取」,对号入座。
与阶乘、二项式定理的联系
两式都建立在阶乘上,规定 0! = 1 才使 r=0、r=n 的边界自洽。组合数即二项式系数:(a+b)ⁿ 展开式中 aⁿ⁻ʳbʳ 的系数为 C(n,r),按行排列即杨辉三角, 满足 C(n,r) = C(n−1,r−1) + C(n−1,r)。
精度:所有结果用大整数(BigInt)精确计算,每一位都正确; 位数过多时先给科学计数法并可查看完整数字。计算在浏览器本地完成。
常见问题
- 排列和组合有什么区别?什么时候用哪个?
- 核心区别是「讲不讲顺序」。排列(Permutation)讲顺序:取出的元素排成不同次序算作不同方案,如给冠亚季军排名、设开锁密码。组合(Combination)不讲顺序:只看取到哪几个、与先后无关,如抽奖选号、从班里选几个人组队。判断口诀:问「谁排第几/顺序不同算不算不同」就用排列,问「只关心选中哪些」就用组合。二者关系是 A(n,r) = C(n,r) × r!——排列比组合多算了 r 个元素内部的 r! 种排序。
- 排列数 A(n,r) 和组合数 C(n,r) 的公式是什么?
- 排列数(也记作 P(n,r)、ₙPᵣ):A(n,r) = n! / (n−r)! = n × (n−1) × … × (n−r+1),即从 n 起连乘 r 个递减的数。组合数(也记作 ₙCᵣ、C(n,r)、二项式系数「n 取 r」):C(n,r) = n! / (r!·(n−r)!) = A(n,r) / r!。例如 A(5,2)=5×4=20,C(5,2)=20/2!=10。它们都要求 0 ≤ r ≤ n;当 r>n 时按定义为 0(没有足够元素可取)。
- C(52,5) 等于多少?怎么手算?
- C(52,5) = 52!/(5!·47!) = (52×51×50×49×48)/(5×4×3×2×1) = 311875200 / 120 = 2598960。这正是从一副 52 张扑克里发 5 张牌、不计顺序的不同手牌总数,是概率题里的经典数据。手算技巧:先写出分子的 5 个连乘 52×51×50×49×48(即 A(52,5)),再除以 5!=120,能整除因为组合数一定是整数。本工具直接给出精确结果。
- 为什么 C(n,r) = C(n,n−r)?0 的组合数是多少?
- 因为「选出 r 个」与「剩下 n−r 个不选」是一一对应的:每选定一组 r 个,就唯一决定了留下的 n−r 个,反之亦然,所以方案数相等,即 C(n,r)=C(n,n−r)。例如 C(10,3)=C(10,7)=120。这也是本工具计算组合数时只做 min(r, n−r) 次乘法、既快又精确的原理。边界上 C(n,0)=C(n,n)=1(一种也不选、或全选,各只有一种方式),A(n,0)=1,且 0!=1 使这些公式在 r=0 时自洽。
- 「可重复」的排列组合又是什么?和普通的差别在哪?
- 普通排列组合默认「每个元素最多取一次」(不放回)。若允许同一元素被重复选取(放回),则有两种:①可重复排列 = n^r,每个位置都能从全部 n 个里选,如 4 位数字密码有 10^4=10000 种;②可重复组合 = C(n+r−1, r),用「隔板法/插空法」推导,如从 3 种口味里买 2 支(可买两支同口味)有 C(4,2)=6 种。本工具四种都会同时给出,按「讲不讲顺序 × 能不能重复」对号入座即可。
- 结果太大普通计算器算不对,这里准吗?最大能算多少?
- 阶乘/排列组合增长极快,普通计算器用浮点数在 20! 之后就会丢精度。本工具用大整数(BigInt)精确逐位相乘,结果的每一位都正确,如 C(100,50)=100891344545564193334812497256(30 位)。为确保每次输入都秒出结果,本工具支持 n ≤ 10 亿、r ≤ 10000;结果位数很多时先显示科学计数法(如 A(100,50)≈3.07×10⁹³),并可查看完整精确值与位数。
- 组合数和杨辉三角、二项式定理有什么关系?
- 组合数 C(n,r) 就是二项式系数:二项式定理 (a+b)ⁿ 的展开式中 aⁿ⁻ʳbʳ 的系数正是 C(n,r),例如 (a+b)⁵ 的系数依次是 C(5,0)…C(5,5)=1,5,10,10,5,1。把这些系数按行排列就得到「杨辉三角」(帕斯卡三角),每个数等于它上方相邻两数之和,对应恒等式 C(n,r)=C(n−1,r−1)+C(n−1,r)。所以组合数、二项式系数、杨辉三角是同一事物的三种说法。
- 排列组合能算负数或小数吗?
- 不能。在初等组合意义下,n 与 r 都必须是非负整数(元素个数不能是负数或小数)。若在数学分析中把组合数推广到实数/复数,需要用伽马函数 Γ 或广义二项式系数,但那已超出本工具范围。本工具只处理非负整数;输入负数或小数会提示无效。若只想算 n! 本身,可用配套的阶乘计算器。