請輸入全體個數 n 和要選的個數 r。會同時計算考慮順序的「排列 nPr」與不考慮順序的「組合 nCr」。下方的數學式和輸入欄連動,直接改寫 n、r 的部分也能計算。
這個頁面可以做什麼
- 只要輸入「全體個數 \(n\)」和「要選的個數 \(r\)」,就能同時知道排列數 \(P^{n}_{r}\)(考慮順序的選法有幾種)與組合數 \(C^{n}_{r}\)(不考慮順序的選法有幾種)
- 「從 11 人的足球隊選出隊長和守門員,有幾種選法?」「選出 2 名前鋒,有幾種選法?」這類方法數的計算,一次就能算好
- 即使 \(n\) 很大、答案有幾十位、幾百位數,也不會四捨五入,完整正確地顯示每一位數
- 這個頁面還整理了公式的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 使用的公式
這個計算有什麼用?
在台灣,大樂透是從 01~49 這 49 個號碼中選 6 個。選號不考慮順序,是組合,所以共有 \(C^{49}_{6} = 13{,}983{,}816\) 種。頭獎(6 個號碼全中)只有其中 1 種,中獎機率約為 1,398 萬分之 1。
組合公式是用具體數字、而不是感覺,來確認彩券和抽獎「有多難中」的基礎。
在 30 人的班級中各選 1 人當班長和副班長,角色不同,所以用排列:\(P^{30}_{2} = 30 \times 29 = 870\) 種。如果只是選 2 名值日生,就跟順序無關,用組合:\(C^{30}_{2} = 435\) 種。
知道「是否區分角色或順序,數量就會不同」,抽籤或選舉時就能正確地計算。
循環賽的比賽場數就是「選出對戰的 2 隊有幾種選法」,所以 \(n\) 隊就是 \(C^{n}_{2}\) 場。10 隊的話是 \(C^{10}_{2} = 45\) 場。
辦運動比賽、排賽程時,會用這個計算估算需要的場數、天數和場地數。
從 0~9 這 10 種數字中,不重複使用同一個數字組成 4 位數的密碼,因為要考慮順序,共有 \(P^{10}_{4} = 5{,}040\) 種。組數越多,越不容易被逐一嘗試破解;多加 1 位數能增加多少安全性,也能用排列來估算。
順帶一提,號碼鎖的英文叫「combination lock」(直譯是「組合鎖」),但順序不對就打不開,所以在數學上它不是組合,而是排列。
從 100 個產品中抽出 5 個來檢驗,選法共有 \(C^{100}_{5} = 75{,}287{,}520\) 種。
統計抽樣檢驗的理論,就是以這個組合數為基礎,計算「混有不良品時,檢驗能發現的機率」,是工廠品質保證不可或缺的機制。
公式
符號與用語解說
符號
| \(n\) | n | 被選取的全體個數。(例:從 11 人中選,就是 \(n = 11\)) |
| \(r\) | r | 從全體中選出的個數。(例:選 2 人,就是 \(r = 2\)) |
| \(n!\) | n 階乘 | 從 \(n\) 到 \(1\) 的整數全部相乘的數,表示 \(n\) 個全部排成一列的排法總數。另外規定 \(0! = 1\)。(例:\(4! = 4 \times 3 \times 2 \times 1 = 24\)) |
| \(P^{n}_{r}\) | P n 取 r | 從 \(n\) 個中選 \(r\) 個依序排列的方法總數(排列)。P 是英文 permutation(排列)的字首。本頁計算機和工程計算機寫成 nPr,意思相同。 |
| \(C^{n}_{r}\) | C n 取 r | 從 \(n\) 個中選 \(r\) 個的方法總數(組合)。C 是英文 combination(組合)的字首。本頁計算機和工程計算機寫成 nCr,意思相同。 |
| \(\binom{n}{r}\) | n 取 r(二項式係數) | \(C^{n}_{r}\) 的另一種寫法。大學以後的數學和國外的教科書常用這種寫法。 |
用語
| 方法數 | 數出所有可能的情形共有幾種的數。排列和組合都是用來計算方法數的工具。 |
| 排列 | 從 \(n\) 個中選 \(r\) 個,考慮順序排成一列的排法。像「隊長和副隊長」這樣,角色或名次不同就當成不同的情形來數。 |
| 組合 | 從 \(n\) 個中只選出 \(r\) 個、不考慮順序的選法。像「2 名值日生」這樣,選出的人相同就算 1 種。 |
| 階乘 | 把從 \(n\) 到 \(1\) 的整數全部相乘的計算。符號是 \(n!\),表示 \(n\) 個全部排成一列的排法總數。 |
| 二項式係數 | \(C^{n}_{r}\) 的別名。因為展開 \((a+b)^n\) 時,各項的係數剛好是 \(C^{n}_{r}\),所以這樣稱呼。 |
| 樹狀圖 | 為了不遺漏、不重複地數出方法數,用分枝的圖把所有情形寫出來的方法。排列與組合的公式,就是用計算一口氣完成樹狀圖的計數。 |
| 重複排列 | 同一個可以重複選取時的排列,共有 \(n^r\) 種。本頁的計算機只處理「不重複」的情形。 |
| 重複組合 | 同一個可以重複選取時的組合。本頁的計算機只處理「不重複」的情形。 |
建議先了解的基礎知識
為了讓您「真正理解意義」地使用這個頁面的計算,這裡整理了建議事先理解的基礎知識。
| 乘法與除法(國小三~五年級,8~11 歲) |
|
| 方法數與樹狀圖(國中,12~15 歲) |
|
| 階乘的符號(高一,15~16 歲) |
|
| 排列與組合(高一,15~16 歲) |
|
用 Excel 計算的方法
| 排列的個數 n | 4 |
| 全部的排法 n! | =FACT(B1) |
| 全體個數 n | 11 |
| 要選的個數 r | 2 |
| 排列 nPr | =PERMUT(B1,B2) |
| 全體個數 n | 11 |
| 要選的個數 r | 2 |
| 組合 nCr | =COMBIN(B1,B2) |
FACT 計算階乘,PERMUT 計算排列,COMBIN 計算組合,都是 Excel 的函數。
例如第 2 個表格的 B3 會顯示 110,第 3 個表格的 B3 會顯示 55。只要把 B1 和 B2 改成自己的數值就能使用。
另外,Excel 的數值只有 15 位有效數字,所以 n 很大、答案有幾十位數時,尾數會被捨入。
用 Google 試算表計算的方法
| 排列的個數 n | 4 |
| 全部的排法 n! | =FACT(B1) |
| 全體個數 n | 11 |
| 要選的個數 r | 2 |
| 排列 nPr | =PERMUT(B1,B2) |
| 全體個數 n | 11 |
| 要選的個數 r | 2 |
| 組合 nCr | =COMBIN(B1,B2) |
把表格整個複製、貼到 A1 儲存格,再把 B1 和 B2 改成自己的數值即可。
用 Python 計算的方法
import math
total_items = 11 # 全體個數 n
chosen_items = 2 # 要選的個數 r
permutations = math.perm(total_items, chosen_items) # 排列 nPr
combinations = math.comb(total_items, chosen_items) # 組合 nCr
print(f"排列 nPr(考慮順序):{permutations}")
print(f"組合 nCr(不考慮順序):{combinations}")
用 LaTeX 等數學式語言的寫法(可直接複製)
n! = n × (n − 1) × ⋯ × 2 × 1
n! = n \times (n-1) \times \cdots \times 2 \times 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi><mo>!</mo>
<mo>=</mo>
<mi>n</mi>
<mo>×</mo>
<mo>(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo>)</mo>
<mo>×</mo>
<mo>⋯</mo>
<mo>×</mo>
<mn>2</mn>
<mo>×</mo>
<mn>1</mn>
</mrow>
</math>
n! = n xx (n-1) xx cdots xx 2 xx 1
Factorial[n]
nFactorial := factorial(n);
n_factorial = factorial(n);
n! = n × (n − 1) × ⋯ × 2 × 1
Pⁿᵣ = n! ÷ (n − r)!
P^{n}_{r} = \dfrac{n!}{(n-r)!}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msubsup><mi>P</mi><mi>r</mi><mi>n</mi></msubsup>
<mo>=</mo>
<mfrac>
<mrow><mi>n</mi><mo>!</mo></mrow>
<mrow><mo>(</mo><mi>n</mi><mo>−</mo><mi>r</mi><mo>)</mo><mo>!</mo></mrow>
</mfrac>
</mrow>
</math>
P_r^n = (n!)/((n-r)!)
n!/(n - r)!
nPr := factorial(n)/factorial(n - r);
npr = factorial(n)/factorial(n - r);
P_r^n = n!/(n − r)!
Cⁿᵣ = n! ÷ (r! × (n − r)!)
C^{n}_{r} = \dfrac{n!}{r!\,(n-r)!}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msubsup><mi>C</mi><mi>r</mi><mi>n</mi></msubsup>
<mo>=</mo>
<mfrac>
<mrow><mi>n</mi><mo>!</mo></mrow>
<mrow>
<mi>r</mi><mo>!</mo>
<mo>(</mo><mi>n</mi><mo>−</mo><mi>r</mi><mo>)</mo><mo>!</mo>
</mrow>
</mfrac>
</mrow>
</math>
C_r^n = (n!)/(r!(n-r)!)
Binomial[n, r]
nCr := binomial(n, r);
ncr = nchoosek(n, r);
C_r^n = n!/(r!(n − r)!)
請 ChatGPT 幫忙計算的方法
你是方法數(排列、組合)的計算助理。請務必實際執行 Python 程式碼來進行下列計算,並只以執行結果的數值作為回答的依據(請不要用心算或猜測回答)。 有一支 11 人的足球隊。 1. 各選 1 人當隊長和守門員,有幾種選法?(角色不同,所以是排列) 2. 選出 2 名前鋒,有幾種選法?(2 人不分順序,所以是組合) 請分別說明使用的是排列 nPr 還是組合 nCr,並列出執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權