组合计算器

组合计算器

欢迎使用组合计算器。请输入元素数量(n)以及抽取数量(k 或 r)。在下方的框中选择是否允许重复。然后点击“计算”按钮。

结果:
2026-03-22,由
Adam Narkiewicz

Adam 拥有经济学博士学位,负责撰写技术类文章,并监督在线应用程序的开发工作。你可以通过以下链接查看他的资料:
https://narkiewicz.info/
https://www.linkedin.com/in/adamnarkiewicz/

组合计算公式

组合表示的是从 n 个元素中选取 k 个元素的情况。它通常称为从 n 取 k 的组合,不要与从 n 取 k 的排列混淆。在组合中,所选择元素的顺序不重要,而在排列中,顺序是重要的。

从一个包含 n 个元素的集合中选取 k 个元素,一共有多少种不同的方式?不允许重复的从 n 取 k 的组合(即每次选取后,该元素会从可选集合中移除,不能再次被选取)通常记作 C(n,k)在许多资料中,也会使用记号 Ckn 或者 (nk)其中后者尤为常见。因此,我们可以写成

C(n,k)=Ckn=(nk)=n!k!(nk)!

其中 n! 表示 n 的阶乘。另一方面,允许重复的从 n 取 k 的组合(即选取的元素会返回到集合中,可以被再次选取)通常记作 E(n,k),有时也会写成 ((nk)):

E(n,k)=((nk))=C(n+k1,k)=(n+k1)!k!(n1)!

不允许重复的组合与不允许重复的排列之间满足如下关系式:

C(n,k)=P(n,k)k!

之所以要将排列的数量除以 k!,是因为在组合中元素的顺序并不重要,而在排列中顺序则是重要的。如果你关注的场景中,所选元素顺序会产生影响,请查看我们的排列计算器

组合的示例

100个人一共会产生多少次握手?

假设你刚到一个鸡尾酒会,现场共有100位来宾(包括你自己)。在每个人都与其他所有人握手致意时,你不禁会好奇:一共会产生多少次握手呢?

这里共有 n = 100个人。在这个群体中,可以组成多少对不同的两人组合?换句话说,从100取2的组合的数量是多少?答案是

C(100,2)=(1002)=100!2!98!=100×992=4950

因此,一共会产生4950次握手。需要注意的是,这里使用的是不允许重复的组合,因为一个人不可能与自己握手!

能获得多少种扑克牌手牌?

我们要考虑扑克牌中不包含大小王的情况,也就是说,牌组共有52张牌。从中抽取五张牌,且不允许重复(因为同一张牌不可能被抽到两次)。同时,牌的顺序并不重要。因此,这里可以使用不允许重复的从 n 取 k 的组合,其中 k = 5,n = 52,其计算公式为

(525)=2598960

由此可知,一副扑克牌可以产生2,598,960种不同的手牌。在此基础上,我们就可以进一步计算各种牌型出现的概率。

获得四条牌型的概率

要组成四条牌型,首先需要选择重复的牌的点数(共有13种可能),然后再选择第五张牌(共有48种可能)。因此,一共有 (131)(481)=13×48=624种不同的四条手牌组合。由此可得,随机拿到一手四条的概率为6242598960=141650.024%

获得葫芦牌型的概率

计算获得一手葫芦牌型的概率要复杂一些。首先,需要选择对子所对应的点数(共有13种可能),以及三条所对应的点数(共有12种可能,不能与对子相同,因此少了一个点数可选)。接下来,还需要考虑花色的不同组合:对子有 (42) 种花色组合,三条有 (43) 种花色组合。将这些数量相乘,就可以得到总的可能出现葫芦牌型的组合数量:

(131)(42)(121)(43)=13×6×12×4=3744

一共有3744种不同的葫芦手牌,因此随机拿到一手葫芦牌型的概率为 37442598960=641650.144%这意味着,拿到葫芦的可能性大约是拿到四条的6倍。

获得同花牌型的概率

同花是指五张牌都属于同一种花色。首先需要选择花色——共有4种可能。然后,从该花色的13张牌中选取5张,一共有 (135) 种选择方式。综合计算得出,能产生

(41)(135)=4×1287=5148

种不同的同花手牌。随机拿到一手同花牌型的概率为 51482598960=33166600.198%

注意!上述公式包含获得同花顺牌型的情况。同花顺是一种特殊的同花,不仅花色相同,牌面点数还必须连续排列。如果你想计算不包含同花顺的“普通同花”的概率,就需要从上面得到的概率中减去同花顺的概率(见下文)。

获得顺子牌型的概率

这里我们期望得到的是得到一组由5张牌组成的顺子——也就是说,每张牌的点数都比前一张高1,而不考虑花色。要计算这种手牌的数量,首先需要确定顺子中的最大牌点数。最大牌可以是 A、K、Q、J、10、9、8、7、6或5(其中 A 也可以作为5-4-3-2-A 顺子中的最小牌),因此,最大牌点数一共有10种选择。一旦确定了最大牌,其余牌的点数也就随之确定。接下来需要为这5张牌选择花色。每张牌都有4种花色可选,我们需要为5张牌分别选定花色。因此,这一步相当于计算允许重复的从4取5的排列,其公式为45。由此可得,能得到

(101)×45=10×1024=10240

顺子手牌。随机拿到一手顺子牌型的概率为 102402598960=128324870.394%

注意!上述公式同样包含了获得同花顺牌型的情况。同花顺是一种特殊的顺子,不仅牌面连续,而且花色相同。如果你想计算不包含同花顺的“普通顺子”(即花色不全相同的顺子)的概率,就需要从上面计算得到的概率中减去同花顺的概率(见下文)。

获得同花顺牌型的概率

同花顺是扑克牌中最珍贵、也最罕见的牌型之一。在这套手牌中,牌面点数是连续的(就跟顺子牌型一样),同时所有牌还必须属于同一种花色(就跟同花牌型一样)。要计算这种手牌的数量,首先需要确定顺子中的最大牌点数。与普通顺子一样,这里共有10种选择方式。确定牌点数之后,还需要选择花色,共有4种花色可以选择。综合以上因素,最终得到的计算公式为

(101)(41)=10×4=40

这样的手牌一共只有40种,因此随机拿到一手同花顺牌型的概率为 402598960=1649740.00154%

注意!上述公式也包含了获得皇家同花顺的情况(见下文)。如果你想计算不包含皇家同花顺的“普通同花顺”的概率,就需要从上面得到的概率中减去皇家同花顺对应的概率。

获得皇家同花顺手牌的概率

获得皇家同花顺牌型的概率比同花顺还要低,因为皇家同花顺是最大牌为 A 的同花顺。因此,皇家同花顺中的牌点数固定为 A、K、Q、J 和10,唯一可能变化的只有花色。由于花色只有4种,因此皇家同花顺一共只有4种不同的手牌牌型。随机拿到一手皇家同花顺的概率为 42598960=16497400.000154%这是获得同花顺概率的十分之一。

获得三条牌型的概率

要组成一手三条,首先需要选择三张同点数牌的点数,共有13种可能。接下来,从剩余的12个点数中选择另外两张牌的点数。这里必须确保不会形成对子(否则就会变成葫芦),因此计算的是不允许重复的从12取2的组合,即 (122)然后需要确定花色。首先为三张相同点数的牌选择花色,有 (43) 种选法。接着为剩下的两张牌选择花色——由于它们点数不同,因此可以独立选择花色,相当于计算允许重复的从4取2的排列,结果有42种。综合以上各步,最终得到的计算公式为

(131)(122)(43)42=13×66×4×16=54912

随机拿到一手三条牌型的概率为 549122598960=884165 2.11%

获得两对牌型的概率

有多少种不同的方式可以组成一手两对?牌呢?首先,需要选择两对所对应的点数,有 (132) 种选择方式。其次,需要为第五张牌选择一个不同于前两对的点数,这里共有 (111) 种可能。接下来,需要确定每一对牌的花色。在每一对中,两张牌的花色必须不同,因此低点数对子有 (42) 种花色选择方式,高点数对子也有 (42) 种花色选择方式。最后,还需要为第五张牌选择花色,这一步有4种可能。将上述所有因数相乘,就可以得到总的可能数:

(132)(111)(42)(42)(41)=78×11×6×6×4=123552

随机拿到一手两对牌型的概率为 1235522598960=1984165 4.75%

获得对子牌型的概率

最后,我们来计算获得对子牌型的概率,计算步骤如下:1)选择对子对应的点数:共有 (131) 种方式;2)从剩余的点数中选择另外三张牌的点数:共有 (123) 种方式;3)为对子中的两张牌选择花色:共有 (42) 种方式;4)为剩余三张牌分别选择花色:共有43种方式。你可能会疑惑:为什么在选择这三张不同点数牌的点数时使用的是组合(即 (123)),而在选择它们的花色时却使用排列(即43)呢?原因在于:在选择点数时,牌在手牌中的顺序并不重要。即使改变牌的顺序,得到的仍然是同样的手牌,因此使用组合计算。但这三张牌的点数各不相同,本身就存在自然的顺序,可以从大到小排列,我们可以利用这一顺序来区分这三张牌,从而依次为最高点数的牌、中间点数的牌以及最低点数的牌选择花色。每一步都有4种选择,因此总共有4×4×4=43种可能。

因此,对子手牌存在数量为

(131)(123)(42)43=13×220×6×64=1098240

而且随机拿到一手对子牌型的概率为 10982402598960=352833 42.3%你也可以通过实验来验证这一结果:洗牌后抽取五张牌。你抽到对子牌了吗?记录你得到的结果。多重复几次,你会发现得到对子的情况略少于一半。

中彩票的概率有多大?

许多国家都有售卖选号型彩票,在这种玩法中,需要从较大的号码池中随机抽取若干个号码。只要你选对了这些号码,就可能中奖——而奖金通常非常丰厚。以中国非常流行的中国体育彩票“大乐透”为例:在这种彩票中,你需要从01到35的号码中选出5个不同号码,然后再从01到12的号码中选出2个不同号码。这种组合方式的所有可能数目是:

(355)(122)=324632×66=21425712

因此,在体彩“大乐透”中,选号方式一共有21,425,712种。换句话说,若想确保中得头奖,理论上需要购买21,425,712注彩票。如果只购买一注,那么中奖的概率为21,425,712分之1,约等于0.00000467%。

带去聚会的零食有多少种不同的可能?

在这个示例中,设想你要去朋友家参加一个聚会,并被邀请带一些零食。可供选择的零食共有三种:薯片、瓜子和巧克力。你打算购买5袋零食,那么一共有多少种不同的搭配方式呢?

首先,我们注意到可供选择的元素有3种,因此 n = 3。其次,零食的排列顺序并不重要。第三,每一种零食都可以购买多袋,也就是说允许重复选择。因此,这里应当计算允许重复的从3取5的组合,其计算公式为

E(3,5)=(3+515)=21

计算结果表明,为这次聚会带去的零食一共有21种不同的搭配方式。为了验证结果是否正确,我们可以列出所有可能的组合(为简化说明,这里用 A、B、C 来表示三种零食):

AAAAA
AAAAB
AAABB
AABBB
ABBBB
BBBBB
CAAAA
CAAAB
CAABB
CABBB
CBBBB
CCAAA
CCAAB
CCABB
CCBBB
CCCAA
CCCAB
CCCBB
CCCCA
CCCCB
CCCCC

组合计算公式详解

不允许重复的从 n 取 k 的组合

不允许重复的从 n 取 k 的组合(有时也称为“n 取 k”或“n 取 r”)的计算公式为

C(n,k)=n!k!(nk)!

为了验证该公式是否确实正确,我们可以检验从1到 n 中选取 k 个数的过程。首先,将所选的数字放入一个长度为 k 的序列中。序列的第一个位置可以由 n 个数字中的任意一个占据;当第一个数字被选中并从可选集合中移除后,第二个位置就只剩下 n − 1种选择。同样地,第二个数字选定并移除后,第三个位置可选的数字数量变为 n − 2。我们以这种方式不断进行选择,直到填满整个长度为k 的序列。要想知道这类序列的所有存在的排布数量(这恰好等于不允许重复的从 n 取 k 的排列的数量),就需要将每一步可选的数量相乘:

P(n,k)=n×(n1)×(n2)××(nk+1)k 个因数

换个角度看,这个乘积等同于某个阶乘中最大的 k 个因数相乘。因此,我们可以将其改写为

P(n,k)=n!(nk)!

其中分母中的阶乘会消去分子中最小的 nk 个乘数因数,剩余部分正好与前面得到的公式一致。

不过,事情并没有到此为止,因为到目前为止,我们计算得到的仍然是排列的数量,而不是组合的数量。在排列中,元素的顺序是重要的;在构造序列时,我们确实关心顺序——先选择第一个位置的数字,再选择第二个、第三个,依此类推。现在,我们希望将由同一组数字组成、仅顺序不同的所有序列视为同一个组合。那么,使用 k 个不同数字可以构成多少种不同的序列呢?答案很简单:是 k! 种不同的排列。因此,要得到组合的数量,就需要将排列的数量除以 k!:

C(n,k)=P(n,k)k!=n!k!(nk)!

允许重复的从 n 取 k 的组合

如何推导允许重复的从 n 取 k 的组合公式?由于 n 个元素中的每一个都可以被选取0到 k 次,我们可以这样想象:有 n 个盒子,编号从1到 n。每个盒子里最多有 k 个球,并且所有盒子里的球加起来一共是 k 个。这些盒子对应各个元素,而某个盒子里的球数则表示我们选取该盒子所代表的元素的次数。

那么,如何用一个数列来描述每个盒子里有多少个球呢?我们可以构造一个由 n − 1个数组成的序列,其构造方式如下:该序列中的第 i 个数表示从第1个盒子到第 i 个盒子为止,盒子数量与球的数量之和。例如,序列中的第一个数等于1加上第一个盒子里的球数(因此其取值范围是1到 k + 1)。第二个数等于2加上前两个盒子里的球数(因此其取值范围是2到 k + 2,并且必须大于第一个数)。第三个数等于3加上前三个盒子里的球数(取值范围是3到 k + 3,并且必须大于第二个数)。依此类推。不难看出,该序列最后一个数的值等于 n − 1加上除最后一个盒子之外所有盒子中的球数。它的最小值为 n − 1(当所有球都在最后一个盒子中时),最大值为 n − 1 + k(当最后一个盒子中没有球时)。

现在,我们换一个角度来看这个问题。设有一个由1到 n − 1 + k 组成的数集。从这个数集中,我们在不允许重复的情况下选取 n − 1个数,并按从小到大的顺序排列成一个序列。这样一来,我们就可以确定每个盒子中放进多少个球。实际上,从包含 n − 1 + k 个数的集合中选取 n − 1个数的每一种选法,都与将 k 个球分配到 n 个盒子中的某一种分配方式对应。那么,从 n − 1 + k 个数中不重复地选取 n − 1个数,一共有多少种可能呢?答案是

C(n+k1,n1)=(n+k1)!(n1)!k!

这几乎已经得到我们要找的公式了。最后一步需要注意的是,分母中两个阶乘的顺序是可以互换的,也就是说,可以写成

C(n+k1,n1)=(n+k1)!(n1)!k!=(n+k1)!k!(n1)!=C(n+k1,k)

最后得到

E(n,k)=C(n+k1,k)=(n+k1)!k!(n1)!

杨辉三角与二项式系数

二项式是指包含两个项的代数式,例如 x+y当我们将 x+y 提升到一个非负整数次幂时,出现在 xy 前面的那些数就称为二项式系数。例如,(x+y)0=1 (x+y)1=x+y (x+y)2=x2+2xy+y2 (x+y)3=x3+3x2y+3xy2+y3——在这些例子中,对应的二项式系数分别是:1、1-1、1-2-1,以及1-3-3-1。我们可以发现,二项式系数与从 n 取 k 的组合之间存在密切关系:当我们展开 (x+y)n 时,位于 xkynk 前面的系数正是 (nk)例如,在 (x+y)3=x3+3x2y+3xy2+y3 中,x2y 前面的系数是 (32)=3这一关系可以用如下通式来表示:

(x+y)n=k=0n(nk)xkynk

此外,二项式系数还呈现出一种有趣的规律——它们可以排列成一个三角形,通常称为“杨辉三角”:

n
01
111
2121
31331
414641
515101051
6

杨辉三角的一个有趣特征是:后一行中的每个数,都可以通过将上一行中相邻的两个数相加得到。例如,在 n = 4这一行中的6,来源于上一行中的3 + 3;同样地,n = 5这一行中的10,来自其上一行中的4 + 6。这个规律可以用如下等式来概括:

(nk)=(n1k1)+(n1k)

二项式方程与恒等式

下面列出了一些最常见、最著名的二项式系数恒等式:

1)
(nk)=(nnk)
2)
(nk)=nk(n1k1)
3)
(nk)=nnk(n1k)
4)
(nk)=nk+1k(nk1)
5)
(nk)=(n1k1)+(n1k)
6)
k=0n(nk)=2n
7)
k=0n(nk)2=(2nn)
8)
k=0n(nk)xk=(1+x)n
9)
k=0n(nk)xkynk=(x+y)n

在 Python 中计算从 n 取 k

在 Python 编程语言中,如果要计算不允许重复的从 n 取 k 的组合的数量,可以使用 math 模块中的 comb 函数:

from math import comb def nCk(n, k): return comb(n, k)

如果要计算允许重复的从 n 取 k 的组合的数量,可以使用将允许重复的组合与不允许重复的组合联系起来的公式:

from math import comb def nEk(n, k): return comb(n + k - 1, k)

如果你想要列出所有不允许重复的从 n 取 k 的组合,Python 也提供了一个内置函数可以直接实现这一点:

from itertools, import combinations def list_combs(n, k): for c in combinations(range(1, n+1), k): print(c)

而如果要列出所有允许重复的从 n 取 k 的组合,可以使用:

from itertools import combinations_with_replacement def list_combs_wr(n, k): for c in combinations_with_replacement(range(1, n+1), k): print(c)

如果你想自行编写一个函数来计算不允许重复的从 n 取 k 的组合的数量,下面是一个示例:

from math import factorial def nCk(n, k): return int(factorial(n) / (factorial(k) * factorial(n-k)))

如果要计算允许重复的从 n 取 k 的组合数量,你也可以使用如下函数实现:

from math import factorial def nEk(n, k): return int(factorial(n + k - 1) / (factorial(k) * factorial(n-1)))

如何使用组合计算器

组合计算器可用于计算允许重复和不允许重复的从 n 取 k 的组合。若要进行计算,请在标有字母 n 的栏中输入可选元素的数量,然后在标有 kr 的栏中输入抽取次数。如果需要计算允许重复的组合,请勾选下方的复选框。最后,点击“计算”按钮,结果将显示在下方。

这款计算器尤其适合处理涉及超大数值的计算。例如,输入 n = 1000000 且 k = 1000时也不会有问题。对于较大的结果,计算器会以两种形式显示:第一行给出采用科学记数法表示的近似值,第二行显示精确结果。

这款计算器没有预设的输入上限,会尝试计算任意大小的 nk。计算是否能够顺利完成,取决于你的系统配置。在桌面设备上,较新的 Chrome 浏览器通常可以轻松计算诸如 n = 8000000000、k = 10000000这样的输入项(例如:在小行星撞击地球后,从全球人口中选出10,000,000名幸存者登上巨型飞船)。但是,在其他系统环境下,尤其是在移动设备上,如此大的数值可能会导致计算变慢,甚至无法完成。

这款计算器还提供了一些其他功能,你可以:

  1. 选择结果以哪个底数显示。你可以使用2到36之间的任意自然数。默认底数为10,也就是以十进制形式显示结果。如果选择了其他底数,该底数仅用于结果显示;输入的数值始终按十进制读取。
  2. 若要清空 nk 的输入值,点击“清除”按钮,然后重新输入所需的数值。
  3. 将结果复制到剪贴板。若要使用此功能(以及以下所有功能),请点击位于“结果”栏上方的相应按钮。
  4. 将结果下载并以文本文件形式保存到你的设备中。
  5. 打印结果。
  6. 将结果页面的链接复制到剪贴板。
  7. 清空结果。

引用或嵌入本内容

你可以免费使用本网站的内容,包括用于商业用途,但需注明本网站为来源。如果你在学术文本中引用本内容,可使用以下参考文献格式:

Narkiewicz A.,组合计算器,https://minesweeper.us/扫雷/组合计算器/,访问日期:

如需在互联网上引用本网站,可以直接链接主网址(https://minesweeper.us/扫雷/组合计算器/),或者,如果你希望链接某个特定的结果,则可使用“复制链接到剪贴板”按钮。

你也可以使用 iframe 元素将本页面嵌入到你的网站中。如果你只想要在页面中展示计算器,隐藏其余内容(如菜单、文章等),可以在 iframesrc 属性中使用以下网址:https://minesweeper.us/扫雷/组合计算器/?iframe=1.

请在你的网站上附上可点击的链接,注明并引用本页面。你也可以发送电子邮件至 contact@simiade.com 告知我们你已在网站中嵌入了我们的应用。这样一来,如果我们对应用进行了更新,更新结果可能影响网站的展示方式,我们会及时通知你,方便你的网站管理员作出相应调整。

参考文献

Charalambides, Charalambos A., Enumerative Combinatorics, CRC Press, 2002.

联系我们

如果你有任何疑问、意见或者建议,请在此留下你的反馈意见:

或者你也可以通过邮件联系我们:

Simiade
Adam Narkiewicz
Plac Bankowy 2
00-095 Warszawa
波兰
+48 728235409
contact@simiade.com
https://simiade.com/zh/

你输入的数必须是非负整数。请勿使用分隔符——仅可输入数字。

底数仅限输入2到36之间的整数。

n 不可以小于 k。

正在计算长度为、元素数为的组合,请稍等……

(允许重复)

正在展示结果……

出现问题:

(底数为

n 不可为0。

组合计算器 | 大数 |

C(,)

E(,)

当前不允许重复

当前允许重复

组合 n=, k=

,底数为

,允许重复

你的反馈意见已发送。感谢你!