📖 什么是排列与组合?
排列(Permutation) 是指从 n 个不同元素中,任取 m (m ≤ n) 个元素,按照一定的顺序排成一列。排列关注元素的顺序,顺序不同视为不同的排列。
组合(Combination) 是指从 n 个不同元素中,任取 m (m ≤ n) 个元素并成一组。组合不关注元素的顺序,只要元素相同即为同一组合。
🌰 举例: 从 {A, B, C} 中选 2 个元素。
🔸 排列:AB、BA、AC、CA、BC、CB → 6 种 (P(3,2)=6)
🔹 组合:AB、AC、BC → 3 种 (C(3,2)=3)
📐 核心公式
其中 n! 表示 n 的阶乘,即 1×2×3×…×n。规定 0! = 1。
当 m > n 时,排列数和组合数均为 0。
📌 快速记忆:
• 排列 = 先从 n 个中选 m 个,再对 m 个进行全排列 → P(n,m) = C(n,m) × m!
• 组合 = 从 n 个中选 m 个,不排序 → C(n,m) = P(n,m) ÷ m!
❓ 常见问题解答
🔹 什么是阶乘?0! 为什么等于 1?
▾
阶乘 是指从 1 到该数的所有正整数相乘,记作 n!。例如 5! = 5×4×3×2×1 = 120。
0! = 1 是一种数学约定,使得组合公式在边界情况(m=0 或 m=n)时依然成立,同时也与空集的排列数一致。
🔹 什么时候用排列,什么时候用组合?
▾
核心区别在于 是否考虑顺序:
• 如果元素的顺序不同算作不同情况 → 用 排列 (P)。例如:比赛冠亚军、密码排列、拍照位置。
• 如果元素的顺序不同算作相同情况 → 用 组合 (C)。例如:选小组成员、抽奖中奖号码(不考虑顺序)、食材搭配。
🔹 m 可以大于 n 吗?结果是多少?
▾
在标准排列组合中,m 不能大于 n。如果 m > n,则无法从 n 个元素中取出 m 个,此时排列数和组合数均为 0。本计算器在检测到 m > n 时会提示「无意义」并返回 0。
🔹 计算出的数值很大,结果准确吗?
▾
本计算器采用 高精度整数运算(基于 JavaScript 的 BigInt),只要 n 和 m 在合理范围内(建议 n ≤ 999),结果均为精确整数,不会出现浮点误差。对于极大的数(如 n=999, m=500),结果位数可能很长,但依然精确。
🔹 排列数 P(n,m) 和组合数 C(n,m) 有什么关系?
▾
两者核心关系为:
P(n, m) = C(n, m) × m!
即:先组合再全排列。也可以反过来:C(n, m) = P(n, m) / m!。
此外还有对称性质:C(n, m) = C(n, n−m),例如 C(8,3) = C(8,5)。
🔹 计算器支持小数或负数吗?
▾
排列组合中的 n 和 m 必须为 非负整数。本计算器输入框已限制为整数类型,如果输入小数或负数,将自动取整或提示无效。建议仅输入正整数进行运算。