排列計算器
要計算排列數,請先輸入可選元素的總數(n),再輸入要選取的次數,也就是序列長度,通常記為 k 或 r。如果同一個元素可以重複選取,請勾選「可重複選取」。接著按下「計算」按鈕,結果就會顯示在下方。
什麼是排列?
排列指的是改變一組元素在序列中的順序。排列數告訴我們,這些元素一共有多少種不同的排法。
所謂「n 中取 k 的排列」,就是從較大 n 個元素集合中選出 k 個,並把它們排成一個序列。排列計算器會根據您輸入的 n 和 k 算出這樣的排列共有多少種。有些資料會用 r 來代替 k,兩者表示的是同一個意思。
n 中取 k 的排列可以分成兩種情況。第一種是不放回,也就是不重複的排列;在這種情況下,n 個元素中的每一個,在同一個序列中最多只能出現一次。第二種是可放回,也就是可重複選取的排列;如果同一個元素可以在序列中出現多次,就屬於這一類。本計算器可以計算這兩種排列。
排列與組合
排列常常會和組合混在一起。比如說,在日常生活中,我們可能會說「打開鎖或保險箱的數字組合」。不過,嚴格來說,開鎖用的一串數字通常是「重複排列」。
在數學裡,排列和組合最大的差別,就在於「順序」要不要算進去。如果是排列,元素的先後順序很重要,所以我們會談到「排法」和「序列」。相反地,如果是組合,順序就不重要;這時候,比較適合說的是「選取元素」,或是討論「元素的子集」。
開鎖密碼是一串有順序的數列,而且數字的順序當然會影響結果。因此,把它稱為「組合」雖然在日常生活中很常見,但從數學角度來看,其實並不正確。
如果您想了解的是組合,而不是排列,可以前往我們的組合計算器。
排列公式
我們先來看不放回的排列,也就是 n 中取 k 不可重複的排列。如果要用 n 個元素排出長度為 k 的序列,那麼可以得到多少種不同的序列呢?答案可以用下面的公式表示:
公式中的 n!,表示 n 的階乘。除了 之外,有些資料也會使用其他符號來表示排列:
如果是可放回的排列,也就是 n 中取 k 的重複排列,則使用下面這個公式:
這其實就是 n 的 k 次方。
排列公式怎麼來的?
我們可以想像一下:現在要用 n 個元素,排出一個長度為 k 的序列。第一個位置可以放什麼呢?因為一開始有 n 個元素可以選,所以第一個位置有 n 種選擇。如果是不可重複的排列,第一個元素選走之後,就不能再用了。因此,第二個位置只剩下 個元素可以選。接著,第二個元素也被選走,到了第三個位置,就只剩下 個元素可以選。這個過程一直繼續下去,直到整個序列都填滿為止,於是會得到下面的公式:
接下來,我們可以讓這個式子同時乘以、再除以同一個數,這樣它的值不會改變。這裡選的是 ,整理之後就會得到:
如果是重複排列,一開始的情況很相似:序列的第一個位置,一樣可以從 n 個元素中選一個。不同的是,因為可重複選取,被選過的元素不會從可選範圍中拿掉。所以到了第二個位置,仍然有 n 個元素可以選;第三個位置也是一樣,後面的每一個位置都如此。這樣一共選 k 次,最後公式就變成:
排列的例子
例子:一副撲克牌有多少種排列?
一般一副撲克牌有52張牌。那麼,這52張牌總共有多少種不同的排法呢?在這個例子中,可用的元素總數是52,所以 n = 52。序列長度,也就是我們要放進排列中的牌數,也是52,因為我們要排列的是整副牌。因此,k = 52。這裡沒有重複的情況,因為每一張牌在排列中都只會出現一次。知道這些條件後,就可以套用公式:
這是一個非常大的數字。您可以使用我們的排列計算器,得到完整的精確答案。由於這裡的選取數量等於元素總數,也就是 k = n,所以公式會簡化成單純的階乘。因此,也可以直接計算52的階乘,得到同樣的答案。
例子:我可以用「一帆風順」組出多少個三字排列?
我們有四個不同的字,現在想看看,用這四個字可以排出多少種不同的三字排列。同樣地,每個字都只能使用一次,所以可以套用公式 。也就是說,一共有24種排列。下面列出全部24種可能:
例子:7 顆不同顏色的球,要分給 4 個小朋友,有幾種分法?
在這個例子中,我們要把球分給四個小朋友:小安、小美、小傑和小宇,而且每個人都拿到一顆球。有7顆球,顏色分別是白色、橘色、藍色、綠色、黃色、紫色和棕色。那麼,要從這7顆球中各選一顆分給4個小朋友,總共有多少種分法呢?這時候,排列就派上用場了。因為同一顆球不能同時分給兩個小朋友,所以我們要用「不放回」的排列來計算:。
因此,這7顆球分給4個小朋友,一共有840種不同的分法。
例子:從20位同學中選出班長、學藝股長和風紀股長,有幾種選法?
假設班上有20位同學。首先,班長可以從這20人當中選出1人。選出班長之後,剩下19人可以擔任學藝股長。接著,當班長和學藝股長都已經選好,風紀股長就可以從剩下的18人當中選出。所以,我們把這幾個數字相乘,就會得到:。也就是說,從20位同學中選出3人分別擔任這些職務,一共有6840種可能。
一般來說,只要有 k 個不同的職位要安排,又有 n 位候選人,就可以用 來計算共有多少種安排方式。在這個例子中,就是:。
例子:如果密碼鎖是4位數,而且沒有0,會有多少種「組合」?
不是一般常見的密碼鎖,因為可用的數字是1到9,而不是0到9。因此,元素總數是 n = 9,序列長度則是 k = 4。每一個數字都可以重複使用,所以這裡要用重複排列來計算。公式如下:
因此,一共有6561種可能的「組合」。如果每試一次密碼需要1秒,那麼把所有可能都試過一遍,應該不到2小時就能打開這個鎖。不過要注意,題目中使用「組合」這個說法,其實並不完全符合數學上的定義。因為密碼中數字的順序會影響結果,所以嚴格來說,這裡討論的應該是「重複排列」,而不是組合。
例子:密碼有多少種可能?
密碼有多少種可能,主要取決於兩件事:密碼的長度,以及可以使用多少種字元。我們用一個例子來看。假設密碼長度是10個字元,而且可以使用英文小寫字母和大寫字母,也就是 a 到 z、A 到 Z,一共52個字母;另外還可以使用數字0到9,以及30個特殊字元:
! @ # $ % ^ & * ( ) - _ = + [ ] \ { } | ; : ' " , . / < > ?
總共可以使用的字元數就是:52 + 10 + 30 = 92,每一個字元都可以重複使用,所以這裡要計算的是「n 中取 k 的重複排列」。公式如下:
這會得到一個非常大的密碼數量。換句話說,只要您的密碼是隨機選出的字元,而不是像 1qaz2wsx、12345678,或 iloveyou520 這種容易猜到的密碼,別人幾乎不可能單靠一個一個嘗試所有「組合」來猜中您的密碼。
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)
大數用的指數計算器
因為重複排列公式是 ,所以這個排列計算器也可以當作指數計算器,用來計算一個數的次冪。這在結果非常大的時候特別方便。比如說,想得到 31000 的精確值,用一般計算器可能不容易處理,但用這個工具就可以很快算出來。使用方式也很簡單:勾選「可重複選取」,把要被乘方的數輸入為 n,把指數輸入為 k。要注意的是,這裡只能使用非負整數。
如何使用排列計算器
要使用這個計算器,請先在標有 n 的欄位中,輸入可供選取的元素數量。接著,在下方標有 k 或 r 的欄位中,輸入選取數量,也就是序列的長度。如果要計算重複排列,請勾選「可重複選取」。然後,按下「計算」按鈕開始計算;如果想重新輸入數值,則可以按「清除」。
計算結果會顯示在下方的「結果」欄位中。如果結果較小,會以單行顯示。若結果很大,系統會用兩種方式呈現:上方顯示科學記號的近似值,下方則顯示完整的精確數字。如果計算過程中發生錯誤,錯誤訊息會取代結果顯示在這裡。
這個計算器只接受非負整數。若是不重複的排列,輸入的數字還必須符合 k ≤ n。若是重複排列,n 和 k 不能同時為0,因為0的0次方沒有定義。輸入數值沒有固定上限。像是 n = 8000000000、k = 1000 這類大數(從地球人口中選出1000人有幾種選法),也應該可以順利計算。至於更大的結果是否能算出來,則要看您的系統設定而定。不過要注意,計算很大的結果可能需要較長時間;如果計算量超過裝置負荷,網站也可能會當掉。
您也可以選擇結果要用哪一種 進位制顯示。預設是10,也就是以十進制顯示。進位制可以設定為2到36之間的任一整數。不過,只有「結果」會依照您選擇的進位制顯示;您輸入的 n 和 k,系統一律會視為十進制數字來處理。
計算完成後,您可以選擇:1)將結果複製到剪貼簿,2)將結果下載為檔案,3)列印結果,4)將結果連結複製到剪貼簿,或5)清除「結果」欄位。若要使用這些功能,請點擊「結果」欄位上方相對應的圖示。
引用或內嵌本內容
您可以免費使用本網站內容,也可以用於商業用途;只要引用本網站作為資料來源即可。如果要在學術文章中引用,可以使用以下格式:
如果要在網路上引用本網站,可以直接連結到本頁的主要網址(https://
您也可以使用 iframe 元素,將本頁內嵌到自己的網站中。如果只想顯示計算器本身,而不顯示選單、文章等其他內容,可以在 src 屬性中使用以下網址:https://
也請您在網站上註明本頁來源,並以可點擊的連結引用本頁。如果您已經將我們的應用程式內嵌到網站中,也歡迎寄信到 contact@simiade.com 告訴我們。這樣一來,如果日後我們對應用程式做出調整,而網站管理員需要更新顯示方式時,我們也可以通知您。
參考資料
Charalambides, Charalambos A., Enumerative Combinatorics, CRC Press, 2002.
聯絡我們
如果您有任何問題、意見或建議,歡迎在這裡留下回饋:
也可以郵寄至:
Adam Narkiewicz
Plac Bankowy 2
00-095 Warszawa
波蘭
+48 728235409
contact@simiade.com
https://simiade.com/zh-Hant/
