排列计算器

排列计算器

如需计算排列数,你需要输入可选元素的数量(n)、允许选择的次数(通常记为 kr),并如果某元素可以多次被选中则需要勾选“允许重复”。按下“计算”按钮,就可以在下方看到结果。

结果:
2026-02-20,由
Adam Narkiewicz

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

什么是排列?

排列是指对一个序列中元素顺序的改变。排列的数量表示该序列可以被重新排列成多少种不同的顺序。

从 n 取 k 的排列是指从包含 n 个元素的集合中选取 k 个元素并按顺序进行排列。本排列计算器用于计算在给定 nk 的情况下,这些排列一共有多少种。有些资料中也会用字母 r 来表示 k,它们的含义是相同的。

从 n 取 k 的排列可以分为两种情况。第一种是不允许重复的排列,即在一个序列中,n 中的每个元素最多只能使用一次。第二种是允许重复的排列,即序列中的元素可以出现多次。在这种情况下,我们称之为允许重复的从 n 取 k 的排列。本计算器支持计算这两种排列。

排列与组合

排列常常会与组合混淆。例如,在日常用语中,人们可能会把打开门锁或保险箱的数字序列称为“组合”。但从严格的数学角度来看,用于打开锁的数字序列通常属于允许重复的排列。

在数学的定义中,排列与组合的不同之处在于:在排列中,元素的排列顺序很重要,因此,我们讨论的是排列方式以及序列;而在组合中,顺序并不重要,更合适的说法是,从中选取元素,或者得到元素的子集。

用于打开门锁的密码是一串数字序列,很显然,密码的数字排布顺序非常重要。因此,尽管在日常用语中有时被称为“组合”,但从数学角度来看,这种说法并不准确。

如果相对于排列,你对组合更感兴趣,请查看我们的组合计算器

排列计算公式

我们先来考虑不允许重复的排列,即不允许重复的从 n 取 k 的排列。如果使用 n 个元素来构造长度为 k 的序列,那么可以得到的不同序列数量由公式

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

计算得出。公式中的 n! 指的是 n 的阶乘。除了 P(n,k) 之外,一些资料中还会使用其他符号表示:

P(n,k)=Pkn=Pn,k=(n)k=nk_

允许重复的从 n 取 k 的排列则可使用以下的公式来计算

U(n,k)=nk

这实际上就是 nk 次方。

排列计算公式详解

假设我们要用 n 个元素组成一个长度为 k 的序列。序列的第一个位置可以放入 n 个元素中的任意一个;但在不允许重复的情况下,每选定一个元素,它就从可选集合中移除了。所以,在第二个位置就只剩下 n1 个可选元素;选定第二个元素后,第三个位置只剩下 n2 个可选元素。如此依次减少,直到填满整个序列,由此可以得到以下的公式:

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

接下来,我们可以在不改变公式数值的前提下对其乘以并除以同一个数。我们巧妙地选择乘以并除以(nk)!就可以得到公式

P(n,k)=n×(n1)×(n2)××(nk+1)×(nk)!(nk)!=n!(nk)!

对于允许重复的排列,思路一开始是类似的:在序列的第一个位置上,我们可以从 n 个元素中任选一个。但由于允许重复,这个元素不会从可选集合中移除,因此在第二个位置上,仍然有 n 个元素可供选择;第三个位置也是如此,依此类推。这样一来,我们一共进行了 k 次选择,最终得到的公式为

U(n,k)=n×n××nk  个因数=nk

排列的示例

示例:一副扑克牌共有多少种排列方式?

一副标准的扑克牌包含52张牌。那么,这些牌一共有多少种不同的排列方式呢?可用的元素总数为52,所以 n = 52。序列的长度,也就是我们希望纳入排列中的牌数,同样是52,因为我们要对整副牌进行排列,所以 k = 52。由于每张牌在排列中只出现一次,因此不允许重复。基于这些条件,我们就可以采用相应的公式:

P(52,52)=52!(5252)!=52!0!=52!8.066×1067

这是一个非常大的数字。你可以使用我们的排列计算器来得到精确结果。由于样本大小等于元素总数,即 k = n,公式可以简化为一个阶乘,因此也可以通过计算52的阶乘来得到精确答案。

示例:从“恭喜发财”这四个字中能得到几个三个字排列方式?

我们现在有四个中文字符,我们想要从中抽取三个字符组成一个词(这个词无需有任何意义)。同样的,每个字符只能用一次,所以,公式就是 P(4,3)=24总的有24种排列方式:

恭喜发
恭喜财
恭发喜
恭发财
恭财喜
恭财发
喜恭发
喜恭财
喜发恭
喜发财
喜财恭
喜财发
发恭喜
发恭财
发喜恭
发喜财
发财恭
发财喜
财恭喜
财恭发
财喜恭
财喜发
财发恭
财发喜

示例:将7个不同颜色的球分给4个孩子,一共有多少种方式?

在这个例子中,我们要给小明、小红、小刚和小丽这四个孩子每人分配一个球。我们共有七个球,颜色分别是白色、橙色、蓝色、绿色、黄色、紫色和棕色。那么,在为每个孩子分配球的时候,有多少种分配方式呢?在这里,同样可以使用排列来解决这个问题。由于同一个球不能分给两个孩子,因此需要使用不允许重复的排列,即 P(7,4)=840

所以,一共有840种不同的方式可以把球分配给孩子们。

示例:从一个有20名学生的班级中,选出班长、副班长和团支书,一共有多少种方式?

首先,有20名学生可以担任班长,我们从中选出一人。确定班长之后,还剩下19名学生可以担任副班长。最后,在已经选定班长和副班长的情况下,还有18名学生可以担任团支书。将这些数量相乘,可得20×19×18=6840。也就是说在选择这三个班委的时候有6840种选择。

总的来说,在有 n 个候选人填补 k 个不同的职位时,分配方式的数量就是 P(n,k)在本示例中,我们就这样计算:P(20,3)=6840

示例:在一个不包含0的四位数密码锁中,一共存在多少种“组合”?

这并不是一种常见的密码锁,因为可用的数字是从1到9,而不是从0到9。因此,可选元素的数量为 n = 9,序列的长度为 k = 4。由于每个数字都可以被重复使用,在这种情况下应当采用允许重复的排列,其计算公式为

U(n,k)=nk=94=6561

由此可得,一共有6561种可能的“组合”。如果确认每一种组合是否正确需要1秒,那么在不到两小时内就可以通过穷举法打开这把锁。需要注意的是,题目中使用的“组合”一词并不符合严格的数学定义。因为在这种情况下,数字的顺序很重要,这里讨论的实际上是允许重复的排列,而不是组合

示例:一共有多少种密码?

答案取决于密码的长度以及可用字符的数量。举个例子,我们来计算长度为10个字符的密码的排列数量。假设可用的字符包括:小写和大写英文字母(从 a 到 z 以及从 A 到 Z,共52个字母)、数字(从0到9,共10个),以及以下特殊字符(共30个):

! @ # $ % ^ & * ( ) - _ = + [ ] \ { } | ; : ' " , . / < > ?

这样一来,可用字符总数为52 + 10 + 30 = 92。由于每个字符都可以被重复使用,因此这里计算的是允许重复的从 n 取 k 的排列,其计算公式为

U(n,k)=nk=9210=43,438,845,422,363,213,824

这意味着可生成的唯一密码数量极其庞大。只要你的密码是随机生成的,而不是使用诸如1234567890abcdefghij 这样容易猜到的“组合”,几乎不可能有人通过穷举所有可能的“组合”来猜中你的密码。

Python 中的排列计算

如果你想要使用编程语言(如 Python)来计算排列数,你可以利用排列公式来创建你自己的函数:

import math def nPk(n, k): return int(math.factorial(n) / math.factorial(n - k))

类似的,你也可以用这个公式来计算允许重复的排列数:

def nUk(n, k): return n**k

如果你希望生成所有不允许重复的排列,可以这样编写:

from itertools, import permutations def list_perms(n, k): perms = permutations(range(n), k) for p in perms: print(p)

然后,如果你想要得到所有允许重复的排列,可以这样编写:

import itertools def list_perms_with_replacents(n, k): for perm in itertools.product(range(n), repeat=k): print(perm)

可计算大数的指数计算器

由于允许重复的排列数量计算公式为 U(n,k)=nk你也可以将本排列计算器当作一个指数计算器你也可以将本排列计算器当作一个指数计算器来使用,用于计算某个数的幂。这在结果非常庞大时尤其方便(例如,可以轻松得到31000的精确值),因为传统计算器往往难以处理如此庞大的结果。只需勾选“允许重复”选项,在 n 栏输入底数,在 k 栏输入指数即可。只能输入非负整数。

如何使用排列计算器

若要使用本计算器,请在标有字母 n 的输入域中输入可选元素的数量。请在下方标有 kr 的输入域中填写样本大小,即序列的长度。如果需要计算允许重复的排列,请勾选“允许重复”。然后点击“计算”按钮进行运算,或点击“清除”按钮重新输入数值。

计算结果将显示在下方的“结果”栏中。如果结果较小,会以单行形式显示;对于较大的数值,则会以两种方式展示:上方显示采用科学记数法表示的近似值,下方显示精确结果。如果计算过程中发生错误,则会显示错误信息,不会显示结果。

本计算器仅接受非负整数输入。对于不允许重复的排列,输入的数值还需满足 kn。对于允许重复的排列,n 和 k 不能同时为0,因为00的值是不定的。输入的数值不存在预设上限。通常可以较为轻松地得到非常大的结果,例如 n = 8000000000 且 k = 1000的情况(例如,可以将其理解为从全球人口中选出最富有的前1000人时,可能出现的不同选择方式的数量)。根据你的系统配置,还可以得到更大的结果。不过,需要注意的是,计算超大结果可能耗时较长;如果计算超出设备的处理能力,网页也可能会发生崩溃。

你可以选择结果所使用的显示底数,默认值为10,也就是以十进制形式显示结果。底数可以设置为2到36之间的任意自然数。不过,需要注意的是,只有计算结果会按照所选底数显示;你输入的 nk 的数值始终被视为十进制数来处理。

你可以使用以下功能:1)将结果复制到剪贴板;2)将结果下载为文件;3)打印结果;4)将结果页面的链接复制到剪贴板;5)清空“结果”栏。若要使用这些功能,请点击位于“结果”栏上方的相应图标。

引用或嵌入本内容

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

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 不得同时为0。

排列计算器 | 大数 |

P(,)

U(,)

n 不可以小于 k。

排列n=,k=

底数为

允许重复

当前不允许重复

当前允许重复

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