排列组合计算器

快速计算 nPr 和 nCr — 完全在浏览器中运行,无需上传。

C(n, r)
P(n, r)


排列与组合

组合 C(n, r) — 也写作 nCr 或"从 n 中选 r" — 计算从 n 个元素中选取 r 个元素的方法数,不考虑顺序。排列 P(n, r) — 也写作 nPr — 计算有序的排列方式数:同样的元素不同顺序分别计数。两者的关系为 P(n, r) = C(n, r) × r!。两者均使用 BigInt 精确计算,即使对于 C(52, 5) = 2,598,960(5 张牌扑克手牌数)这样的大输入也不会有浮点舍入误差。

结果随输入实时更新。r 必须在 0 到 n 之间(含两端),n 和 r 均须为非负整数。

常见问题

排列和组合有什么区别? 排列中顺序有意义,组合中没有。从集合中选 {A, B} 和 {B, A} 是一种组合,但是两种排列。

nCr(n, 0) 等于什么? 等于 1。从任何集合中选取 0 个元素只有一种方式:什么都不选。

为什么使用 BigInt? 阶乘增长极快。JavaScript 普通数字在约 2⁵³ 处开始失去精度,因此 nPr(20, 20) = 20! = 2,432,902,008,176,640,000 这样的大输入会悄无声息地丢失数字。BigInt 完全避免了这一问题。

nCr 有什么实际例子? 从 52 张牌中选 5 张:C(52, 5) = 2,598,960 种可能的手牌。顺序无关紧要 — 相同的五张牌以不同顺序发出是同一手牌。

相关工具

热门工具