Excel RAND 函數是用來產生 0 到 1 之間均勻分布隨機小數的內建公式。 最常見的誤用是直接寫 =INT(RAND()*100+1) 來產生隨機整數——這個寫法看似正確,但會導致特定數字的機率偏差,本文會說明正確做法以及背後的原因。
Excel RAND 函數是什麼?語法、回傳值與版本支援
RAND 是 Excel 最基礎的亂數函數,語法極其簡單:
=RAND()
不需要任何參數,按下 Enter 就會回傳一個大於等於 0、小於 1 的十進位隨機小數(0 ≦ x < 1)。這些數字呈均勻分布(Uniform Distribution),代表 0 到 1 之間每個數值出現的機率相同。
一個常見的誤解:RAND 可能產生 0,但永遠不會產生 1。 這在設計公式時很重要——如果你用 RAND()*10 來產生 0 到 10 的數字,實際上最大值只會無限接近 10,永遠不會等於 10。

不同版本的 Excel 和 Google Sheets 對亂數函數的支援程度不同,以下是快速對照:
| 函數 | Excel 2016 | Excel 2019 | Microsoft 365 | Google Sheets |
|---|---|---|---|---|
| RAND | ✅ | ✅ | ✅ | ✅ |
| RANDBETWEEN | ✅ | ✅ | ✅ | ✅ |
| RANDARRAY | ❌ | ✅(部分) | ✅ | ✅(語法不同) |
如果你使用的是 Excel 2016 或更早版本,本文第 7 節的 RANDARRAY 功能將無法使用,但前 6 節的所有公式都完全相容。想更全面地掌握 Excel 公式的基礎,可以先從公式教學開始。
RAND 基本用法與動態刷新特性
在任何儲存格輸入 =RAND() 並按 Enter,你會立刻看到一個類似 0.738291... 的小數。但如果你點擊其他儲存格再回來看,數字可能已經變了——這就是 RAND 的動態刷新特性。
觸發刷新的 4 種情況
RAND 產生的數字會在以下時機自動重新計算:
- 按下 F9(手動觸發整個工作表重新計算)
- 編輯任何儲存格(不只是 RAND 所在的儲存格,任何儲存格的編輯都會觸發)
- 開啟檔案時(每次開啟都會產生新的亂數)
- 執行排序或篩選(資料操作也會觸發重新計算)
這個特性在某些場景是優點(每次都能得到新的隨機結果),但在需要保留結果的場景就會造成困擾。
切換為手動計算模式
如果你正在建立一個包含大量 RAND 公式的工作表,不希望每次編輯都觸發刷新,可以這樣做:
- 點選上方選單的「公式」頁籤
- 找到「計算選項」
- 選擇「手動」
切換為手動模式後,RAND 只會在你按下 F9 時才重新計算。完成作業後記得切回「自動」,否則其他公式也不會自動更新。
如果你需要固定亂數結果(讓數字不再變動),請直接跳到本文第 5 節的 3 種固定方法。

產生指定範圍的亂數(小數與整數)
RAND 預設只產生 0 到 1 之間的小數,但透過簡單的數學運算,你可以產生任何範圍的隨機數字。
產生特定範圍的隨機小數
通用公式:
= 下限 + (上限 - 下限) * RAND()
範例:產生 10 到 50 之間的隨機小數
=10 + (50 - 10) * RAND()
這個公式的邏輯是:RAND() 產生 0 到 1 的小數,乘以範圍寬度(40),再加上下限(10),就能得到 10 到 50 之間的數字。
常見錯誤提醒: 很多人會直覺地寫 =RAND()*100+1 來產生 1 到 100 的亂數,但這個公式實際產生的範圍是 1 到 101(不含 101)。雖然差異很小,但在需要精確範圍的場景(例如模擬)中可能造成偏差。正確寫法應該是 =1 + (100 - 1) * RAND(),產生 1 到 100(不含 100)的小數。

產生隨機整數:INT 方法 vs ROUND 方法
如果你需要的是整數而非小數,有兩種常見做法:
方法一:INT 函數(推薦)
=INT(下限 + (上限 - 下限 + 1) * RAND())
範例:產生 1 到 100 的隨機整數:
=INT(1 + (100 - 1 + 1) * RAND())
注意公式中的 +1——這是因為 INT 函數會無條件捨去小數部分,如果不加 1,最大值 100 永遠不會出現。
⚠️ 常見錯誤寫法警告: 很多教學會直接寫 =INT(RAND()*100+1),這個寫法雖然看起來能產生 1 到 100 的整數,但實際上數字 1 出現的機率比其他數字低。原因是:RAND()*100 的範圍是 0 到 99.999…,加 1 後變成 1 到 100.999…,經過 INT 捨去小數後,只有當 RAND() 產生極接近 0 的值時才會得到 1(範圍是 0 到 0.00999…),而得到其他數字(例如 50)的範圍是 0.49 到 0.50999…,機率約為前者的兩倍。正確寫法是上面的 =INT(1 + 100 * RAND()),確保每個整數的機率完全相同。
方法二:ROUND 函數
=ROUND(下限 + (上限 - 下限) * RAND(), 0)
這個方法用四捨五入取整數,但有一個隱藏問題:上下界的機率只有其他數字的一半。 以產生 1 到 10 的整數為例,數字 1 只有在 RAND 產生 0 到 0.5/9 時才會出現,而數字 5 在 RAND 產生 3.5/9 到 4.5/9 時都會出現,機率範圍是前者的兩倍。
判斷建議:優先使用 INT 方法。 除非你對 ROUND 函數有特殊需求(例如需要四捨五入到特定小數位),否則 INT 方法能確保每個整數出現的機率完全相同。
RAND vs RANDBETWEEN:如何選擇?
Excel 還有另一個專門產生隨機整數的函數——RANDBETWEEN。很多人搞不清楚什麼時候該用哪個,以下是完整比較:
| 比較項目 | RAND | RANDBETWEEN |
|---|---|---|
| 語法 | =RAND() |
=RANDBETWEEN(下限, 上限) |
| 結果類型 | 小數(0 ≦ x < 1) | 整數(含上下限) |
| 範圍設定 | 需自行用公式調整 | 直接指定上下限 |
| 操作難易度 | 需搭配 INT 或其他函數 | 單一公式即可 |
| 適用情境 | 模擬、機率計算、需要小數 | 抽獎、分組、編號 |
| 動態刷新 | 是 | 是 |
| 可能重複 | 是 | 是 |
RANDBETWEEN 完整範例:
=RANDBETWEEN(1, 100)
這個公式會直接產生 1 到 100(含 1 和 100)的隨機整數,不需要額外搭配 INT。如果你只是需要一個範圍內的隨機整數,RANDBETWEEN 比 INT(RAND()*...) 簡潔得多。

判斷框架:
- 需要小數亂數或進行蒙地卡羅模擬 → 用 RAND
- 需要明確範圍的整數(如 1 到 50 的抽獎號碼)→ 用 RANDBETWEEN
- 需要一次產生多個亂數的陣列 → 用 RANDARRAY(見第 7 節)
要注意的是,RANDBETWEEN 同樣具有動態刷新特性,也同樣可能產生重複數字。如果你需要不重複的亂數,請看第 6-3 節的解法。
如何固定 RAND 產生的亂數(不再自動刷新)
這是搜尋「Excel rand 固定」的讀者最需要的段落。RAND 的動態刷新特性有時很惱人——你好不容易產生了滿意的隨機分配結果,一不小心按到鍵盤就全部重新洗牌了。以下是 3 種固定方法:
方法一:複製貼上值(最常用)
這是最直覺的方法,適合一次性固定:
- 選取包含 RAND 公式的儲存格範圍
- 按
Ctrl+C複製 - 在同一位置按右鍵,選擇「選擇性貼上」→「值」(或直接按
Ctrl+Shift+V)
貼上值之後,儲存格中的公式會被替換為靜態數字,不再隨計算變動。
方法二:手動計算模式(適合批次作業)
如果你需要在多個儲存格中反覆調整 RAND 公式,但不希望每次編輯都觸發刷新:
- 進入「公式」→「計算選項」→「手動」
- 編輯你的 RAND 公式
- 按
F9手動觸發計算,直到得到滿意的結果 - 用方法一將結果固定
- 記得切回「自動」計算模式
方法三:IF 觸發欄位控制刷新(進階)
如果你需要一個「開關」來控制亂數是否刷新,可以用 IF 函數搭配輔助欄位:
=IF(B1="固定", C1, RAND())
這個公式的邏輯是:
- 當 B1 儲存格的值為「固定」時,公式會引用 C1 的值(你事先貼上的靜態數字)
- 當 B1 不是「固定」時,公式會產生新的 RAND 亂數
這種方法適合需要反覆切換「產生新亂數」和「鎖定結果」的工作流程,例如每週重新分配任務時。

重要提醒: Excel 不支援亂數種子(random seed)設定,這代表你無法重現特定的亂數序列。如果你的工作需要可重現的隨機結果(例如學術研究的可複製性要求),建議改用 Python 的 numpy.random.seed() 或 R 語言的 set.seed()。
RAND 進階應用(含完整可複製公式)
掌握基礎之後,以下是 RAND 在實務中最常見的 4 種進階應用。每個應用都附上可直接複製的完整公式。
隨機排序資料(亂序名單)
這是「Excel 隨機排序」最常見的需求——把一份名單打亂順序。
完整步驟:
- 假設名單在 A2:A11(10 個人名)
- 在 B2 輸入
=RAND(),向下填滿到 B11 - 選取整個資料範圍(A2:B11)
- 點選「資料」→「排序」→ 依 B 欄排序
- 立刻將 B 欄的 RAND 值複製貼上為值(否則下次操作會再次刷新)
真實案例: 在專案會議中,利用 RAND 函數快速產生亂數,決定誰先發表意見。10 人團隊每週一的站立會議,與其每次都讓同一個人先報告,用 RAND 隨機排序只需要 30 秒就能產生公平的新順序——打開 Excel、按一次 F9、唸出排序結果,整個過程比猜拳還快。
如果你使用 Excel 365,還有更簡潔的寫法:
=SORTBY(A2:A11, RANDARRAY(10))
這個公式會直接回傳隨機排序後的名單,不需要輔助欄。但記得結果仍然是動態的,需要貼上值來固定。

隨機抽樣(從大量資料中取樣)
品質抽查、客戶回訪、訂單稽核——這些場景都需要從大量資料中隨機抽取樣本。
Excel 365 公式(推薦):
從 A2:A100 中隨機抽取 5 筆資料:
=INDEX(SORTBY(A2:A100, RANDARRAY(99)), SEQUENCE(5))
公式拆解:
RANDARRAY(99)產生 99 個亂數(對應 99 筆資料)SORTBY(A2:A100, ...)依亂數重新排序資料INDEX(..., SEQUENCE(5))取排序後的前 5 筆
舊版 Excel(2016 以前)替代方案:
- 在 B2 輸入
=RAND(),向下填滿到 B100 - 在 C2 輸入
=SMALL(B$2:B$100, ROW()-1),向下填滿到 C6(取 5 筆) - 在 D2 輸入
=INDEX(A$2:A$100, MATCH(C2, B$2:B$100, 0)),向下填滿到 D6
這個方法比較繁瑣,但在所有 Excel 版本都能運作。
應用案例: 品管團隊需要從本月 500 筆出貨訂單中隨機抽取 20 筆進行品質檢查。用上述公式,每次按 F9 就能產生一組新的抽樣名單。
產生不重複亂數(Excel 365 vs 舊版)
這是搜尋「Excel random 不重複」和「Excel randbetween 不重複」的讀者最需要的解答。RAND 和 RANDBETWEEN 本身都可能產生重複值,需要額外處理。
Excel 365 完整公式:
從 1 到 20 中取出 5 個不重複的隨機整數:
=INDEX(SORTBY(ROW(A1:A20), RANDARRAY(20)), SEQUENCE(5))
公式拆解:
ROW(A1:A20)產生 1 到 20 的序列RANDARRAY(20)產生 20 個亂數SORTBY(...)依亂數重新排序 1-20 的序列SEQUENCE(5)取前 5 個
這個方法的原理是:先把所有候選數字隨機排序,再從頭取需要的數量,自然就不會重複。
舊版 Excel 替代方案(RANK + RAND 輔助欄):
- 在 A1:A20 填入 1 到 20 的數字
- 在 B1 輸入
=RAND(),向下填滿到 B20 - 在 C1 輸入
=RANK(B1, B$1:B$20),向下填滿到 C20 - C 欄的排名就是不重複的隨機排序結果
- 取 C 欄中值為 1 到 5 的對應 A 欄數字,就是 5 個不重複的隨機整數
為什麼 RANK 能保證不重複? 因為 RAND 產生的小數精度高達 15 位,兩個 RAND 值完全相同的機率趨近於零,所以 RANK 排名自然不會重複。

常態分布亂數(進階模擬)
RAND 產生的是均勻分布的亂數,但真實世界的資料通常呈常態分布(鐘形曲線)。如果你需要模擬更貼近現實的隨機資料,可以搭配 NORM.INV 函數:
=NORM.INV(RAND(), 平均數, 標準差)
範例:模擬專案工期的不確定性
假設某任務的預估工期平均為 10 天,標準差為 2 天:
=NORM.INV(RAND(), 10, 2)
這個公式會產生以 10 為中心、大部分落在 6 到 14 天之間的隨機工期。在專案管理中,這就是蒙地卡羅模擬(Monte Carlo Simulation)的基礎——透過大量隨機模擬來預測專案完成時間的機率分布。
均勻分布 vs 常態分布的差異:
- 均勻分布(RAND):每個值出現的機率相同,適合抽獎、隨機分配
- 常態分布(NORM.INV + RAND):中間值出現機率高、極端值機率低,適合模擬真實世界的變異
產業應用情境舉例
以下是 RAND 函數在不同工作場景中的三個具體應用:
- 專案管理——隨機分配任務: 當團隊有多項同質性任務(例如 20 份待審文件),用 RAND 搭配排序隨機分配給 5 位成員,避免主管分配時的主觀偏好。
- 風險分析——蒙地卡羅模擬預測專案風險: 將每項任務的工期設為
NORM.INV(RAND(), 預估天數, 標準差),模擬 1000 次後統計專案總工期的分布,就能回答「專案在 90 天內完成的機率是多少?」這類問題。 - 行政作業——隨機抽樣檢查報表品質: 每月從 300 份費用報表中隨機抽取 15 份進行詳細稽核,確保抽樣的公正性與不可預測性。

RANDARRAY 函數(Excel 365 新功能)
如果你使用 Excel 2019 或 Microsoft 365,RANDARRAY 是產生大量亂數最有效率的方式——一個公式就能填滿整個區域,不需要下拉填滿。
RANDARRAY 語法
=RANDARRAY(列數, [欄數], [最小值], [最大值], [整數])
| 參數 | 說明 | 預設值 |
|---|---|---|
| 列數 | 產生幾列 | 必填 |
| 欄數 | 產生幾欄 | 1 |
| 最小值 | 亂數下限 | 0 |
| 最大值 | 亂數上限 | 1 |
| 整數 | TRUE = 整數,FALSE = 小數 | FALSE |
實用範例
產生 5×3 的隨機整數陣列(1 到 100):
=RANDARRAY(5, 3, 1, 100, TRUE)
這個公式會在一個 5 列 3 欄的區域中填入 1 到 100 的隨機整數,完全不需要手動下拉。
產生 10 個不重複的隨機整數(1 到 50):
結合前面學到的 SORTBY 技巧:
=INDEX(SORTBY(ROW(A1:A50), RANDARRAY(50)), SEQUENCE(10))

Google Sheets 的 RANDARRAY 差異
Google Sheets 也支援 RANDARRAY,但語法略有不同:
=RANDARRAY(列數, 欄數)
Google Sheets 的 RANDARRAY 不支援最小值、最大值和整數參數。如果你需要指定範圍的整數,必須自行包裝:
=INT(RANDARRAY(5, 3) * (100 - 1 + 1) + 1)
另一個重要差異:Google Sheets 的 RAND 和 RANDARRAY 在任何儲存格被編輯時都會刷新,比 Excel 更頻繁。如果你在 Google Sheets 中使用大量亂數公式,建議更積極地使用「貼上值」來固定結果。
當隨機分配超出 Excel 能力範圍
Excel 的 RAND 函數非常適合一次性的隨機抽樣或排序,但如果你的需求是持續性的團隊任務隨機分配——例如每週自動輪換值班人員、隨機指派客服案件、或根據工作量平衡分配新任務——Excel 的手動操作就會變得很痛苦。
每次都要重新開啟檔案、按 F9、複製貼上值、再通知相關人員,這個流程本身就是效率瓶頸。更別提多人同時編輯 Excel 檔案時的版本衝突問題。
如果你的團隊有這類需求,monday.com 和 ClickUp 這類專案管理工具都提供自動化任務分配功能——可以設定「當新任務建立時,自動輪流分配給團隊成員」的規則,不需要寫公式,不需要手動操作,分配結果即時通知到每個人。
結論
Excel RAND 函數看似簡單,但搭配不同的函數組合,能解決從基礎抽獎到進階蒙地卡羅模擬的各種需求。以下是本文的核心重點:
- 基礎語法:
=RAND()產生 0 到 1 的均勻分布小數,每次計算自動刷新 - 指定範圍:小數用
=下限 + (上限-下限) * RAND(),整數優先用 INT 方法而非 ROUND - RAND vs RANDBETWEEN:需要小數或模擬用 RAND,需要整數用 RANDBETWEEN,需要陣列用 RANDARRAY
- 固定亂數:最常用的方法是「複製 → 選擇性貼上值」,進階可用 IF 觸發欄位控制
- 不重複亂數:Excel 365 用
SORTBY + RANDARRAY + SEQUENCE一個公式搞定,舊版用 RANK 輔助欄
最快的學習方式是實際動手:打開你的 Excel,在任意儲存格輸入 =RANDARRAY(5, 3, 1, 100, TRUE),親眼看看一個公式產生 15 個隨機整數的效果。如果你的版本不支援 RANDARRAY,先從 =RAND() 開始練習,搭配本文的公式逐步進階。
Excel RAND 函數常見問題
RAND 產生的亂數安全嗎?可以用於密碼嗎?
不適合。Excel 的 RAND 使用的是偽隨機數演算法(Pseudorandom Number Generator),產生的數字序列在理論上是可預測的。如果你需要產生密碼或安全金鑰,應該使用專業的加密工具或程式語言中的密碼學安全隨機數產生器(如 Python 的 secrets 模組)。
RAND 和 Google Sheets 的用法一樣嗎?
基本語法相同,但有兩個重要差異。第一,Google Sheets 的刷新更頻繁——任何儲存格的輸入都會觸發所有 RAND 重新計算,而 Excel 在某些操作下不會。第二,Google Sheets 的 RANDARRAY 不支援最小值、最大值和整數參數,需要自行用 INT 和乘法包裝。如果你經常在兩個平台之間切換,建議用最基礎的 RAND 搭配 INT 的寫法,相容性最高。
RAND 產生的亂數會重複嗎?
RAND 產生的 15 位小數,理論上重複的機率極低——約十兆分之一。但在大量運算時(例如一次產生數萬個亂數),仍然有可能出現重複。而 RANDBETWEEN 在範圍較小時重複機率就很高——例如 =RANDBETWEEN(1,10) 產生 10 個數字,幾乎一定會重複。
如何產生不重複的亂數?
如果需要不重複的亂數,請使用本文第 6-3 節的方法:Excel 365 用 SORTBY + RANDARRAY + SEQUENCE,舊版用 RANK 輔助欄。這些方法的原理都是先產生完整序列再隨機排序,而非逐一產生亂數後去重。
如何在 Excel 中產生固定的亂數序列(可重現)?
Excel 本身不支援亂數種子(random seed)設定,無法重現特定的亂數序列。如果你的工作需要可重現的隨機結果(例如學術研究),建議使用 Python(numpy.random.seed(42))或 R 語言(set.seed(42))。在 Excel 中,最接近的替代方案是產生亂數後立刻「貼上值」保存,並記錄這組數字供日後使用。
RANDARRAY 在哪些版本可以使用?
RANDARRAY 需要 Excel 2019 或 Microsoft 365(Office 365)才能使用。Excel 2016 及更早版本不支援此函數。如果你使用的是舊版 Excel,可以用 RAND 搭配下拉填滿來達到類似效果,只是操作上比較繁瑣。Google Sheets 支援 RANDARRAY 但語法不同,不支援範圍和整數參數。想了解更多 Excel 進階功能,可以參考 Excel 圖表教學來搭配亂數資料做視覺化呈現。