你可以用 Python 透過 random.choice() 從一個列表中拉出一個隨機英文單字,但瀏覽器型的隨機單字產生器可以從一份策展過的 300+ 單字列表中,返回 1 到 50 個不重複的單字,而且不需要任何 import、任何腳本,也不需要打開終端機。如果你的目標只是為了創意提示、遊戲或命名任務而取得一個單字,那麼開啟一個工具網頁會比為了抽一個單字而 pip install NLTK 或 wonderwords 來得快。Python 的路線仍有其用途 —— 當你的程式碼需要把單字當作變數使用、當你希望從一個種子 (seed) 產生可重現的輸出、或當你要把結果導入更大的管線 (pipeline) 時。除此之外,寫三行 Python 和按一個按鈕之間的差別,決定了你會花三十秒還是三分鐘在這項任務上。本指南的其餘部分會說明何者勝出、隨機單字產生器上的確切控制項,以及如何組合篩選器,讓每一次抽樣都真正有用而不是雜訊。

Python 內建取得隨機單字的方式
標準函式庫已經內建了你取得一個隨機單字所需的一切。在任何 Python 3 安裝中,模式都相同:把單字放進一個列表,呼叫 random.choice(),就完成了一次抽樣,不需要額外安裝任何東西。若要不重複地取得多個單字,可改用 random.sample()。若要先篩選詞庫,可用列表推導式 (list comprehension) 包起來。若要讓抽樣可重現,就設定一個種子。
- 建立單字列表。在腳本中,用方括號把你的單字包起來。對於單次抽樣,一份簡短的名詞、動詞或形容詞列表就已足夠。
- 匯入 random 模組。在檔案頂端加上 import random。基本路徑不需要任何第三方套件。
- 對列表呼叫 random.choice()。此函式會隨機返回一個項目。相同的呼叫也適用於元組 (tuple)、字串或任何序列 (sequence)。
- 用 random.sample() 抽出多個單字。傳入列表與計數 k,即可在單次呼叫中取得 k 個不重複的項目。random.sample(words, k=5) 會返回五個不同的單字。
- 在抽樣前先篩選詞庫。像 [w for w in words if len(w) >= 7] 這樣的列表推導式會只保留長單字,而 [w for w in words if w.startswith("c")] 則只保留以字母 C 開頭的單字。
- 設定種子以利重現。random.seed(42) 會鎖定抽樣結果,使相同的輸入永遠返回相同的輸出 —— 這對測試、教學和示範很有用。
若需要比手打列表大得多的詞庫,兩個第三方套件通常是下一步的選擇。PyPI 上的 wonderwords 套件提供 RandomWord() 類別,內建詞性與起始字母篩選功能。NLTK 專案則提供 words 語料庫,是一份大型英文單字列表,可以載入一次後反覆取樣。兩者都需要 pip install,而且在 NLTK 的情況下,還需要一次性下載才能運作。
Python 何時適用,何時不適用
當單字必須流入程式碼時,Python 就是正確答案:在自動產生的設定檔中的變數名稱、Jinja 模板中的佔位符、餵給自動執行腳本的提示。當可重現性很重要、當單字列表必須從你維護的自訂檔案載入、或當抽樣是按排程執行的大型資料管線的一部分時,它同樣是正確答案。
當你只是現在需要一個單字、給某個由人閱讀的東西使用時,Python 就是錯誤的答案。盯著空白頁面的文案人員、為課堂暖身準備單字的老師、主持一輪比手畫腳遊戲的主持人 —— 這些情境都不需要腳本、虛擬環境或儲存的檔案。他們需要在靈感冷卻之前,螢幕上就出現一個單字。開啟終端機、貼上 import、執行腳本、再複製輸出,這整段摩擦力正是許多人放棄 Python 路線、再次搜尋更簡單方式的原因。
還有安裝上的問題。較新的 Python 環境預設並未隨附可直接 pip 使用的單字列表。任何按照教學使用 wonderwords 或 NLTK 的人,都需要網路存取和乾淨的安裝,第一次抽樣才會運作。瀏覽器工具則完全消除了這些障礙:打開頁面,按一下,讀取結果。
若想取得折衷方案,這份完整的 Python 與瀏覽器比較會逐步介紹兩種程式碼路徑,並說明何者能省下時間。
真正需要隨機單字的實際情境
搜尋「random word in python」幾乎總是隱藏著一個下游任務。一旦你為任務命名,正確的工具就會變得顯而易見。下表將常見情境對應到合適的方法。
| 情境 | 隨機單字的用途 | 最佳方法 |
|---|---|---|
| 面對空白頁的寫作提示 | 一個突如其來的單字,激發一首詩、一個場景或自由寫作 | 瀏覽器工具,1–3 個單字 |
| 單字遊戲(畫圖猜字、比手畫腳、Scattergories) | 為每一輪提供提示 | 瀏覽器工具,按長度或起始字母篩選 |
| 品牌或產品命名 | 用於配對與組合的原料 | 瀏覽器工具,一次取得 10–30 個單字 |
| 詞彙練習或拼字練習 | 當日課程的單字列表 | 具備起始字母篩選的瀏覽器工具 |
| 變數、檔案或 Wi-Fi 名稱 | 易於輸入的代用標籤 | 瀏覽器工具,短單字 |
| 腳本或模板中的行內資料 | 嵌入執行中程式碼的單字 | Python random.choice() |
最後一列是唯一真正需要 Python 的情境。其餘都是人為取用的任務,瀏覽器工具能比任何你寫的腳本更快交付單字。
如何使用隨機單字產生器(逐步說明)
隨機單字產生器會從一份收錄超過 300 個名詞、動詞與形容詞的策展列表中,抽出 1 到 50 個不重複的英文單字。整個流程完全在你的瀏覽器中執行 —— 不會上傳任何東西,也不會記錄任何東西。
- 設定你想要的單字數量。數量控制項接受 1 到 50 之間的任何數值。需要快速提示時選小一點;需要原料以便掃讀與組合時,選較大的批次。
- (選擇性)在抽樣前套用最多三個篩選器。選擇詞性(名詞、動詞或形容詞)以符合文法位置。選擇長度區間 —— 短 (3–4 個字母)、中 (5–6 個字母) 或長 (7 個以上) —— 以配合你想要的節奏或難度。輸入單一起始字母,以營造押韻效果或聚焦拼字練習。篩選器可組合,因此「六個以 C 開頭的長形容詞」是單一有效的請求。
- 點擊 Generate(產生)。工具會使用 Fisher–Yates 演算法將篩選後的詞庫洗牌,並返回前 N 個單字。由於洗牌是無偏的,合格詞庫中的每個單字都有相同的出現機率。同一批抽樣中不會重複單字。
- 閱讀你的單字。若這批單字不實用,請更改數量或放寬篩選器,再點擊 Generate。每次點擊都會重新洗牌,因此第二次抽樣與第一次確實不同。
- 點擊 Copy 取得列表。單字以每行一個的格式輸出,可直接貼到文件、聊天視窗或試算表中。
篩選器說明:詞性、長度與起始字母
篩選器能把隨機抽樣從猜謎遊戲變成精準的工具。隨機單字產生器提供三種,而且全部可以堆疊。
詞性篩選器接受名詞、動詞或形容詞。當你正在建構的句子已經定義好詞類位置時,便可使用。「我需要一個以 S 開頭的動詞」是單一篩選器的抽樣。「我需要一個以 C 開頭的長形容詞」則同時堆疊了長度與起始字母。
長度區間有三個設定:短 (3–4 個字母)、中 (5–6 個字母) 與長 (7 個以上字母)。短單字適合需要把提示寫在索引卡上的快速派對遊戲。長單字適合年紀較長學習者的詞彙練習,或你想要獨特效果的命名任務。
起始字母篩選器接受 A 到 Z 之間的任何單一字母。這是三種篩選器中最精準的一種。針對字母 B 的拼字練習、需要押韻的詩歌、按起始音分組的詞彙表 —— 全部都能透過單次抽樣完成,不必手動排序。
篩選器的組合沒有限制。工具施加的限制純粹是實務上的:如果你的篩選器使得合格詞庫中的單字數少於你要求的數量,工具會返回所有符合條件的單字,而不是用重複項目來填滿列表。放寬篩選器或降低數量,可讓結果更豐富。
什麼樣的隨機單字產生器值得信賴
網路上的隨機單字工具良莠不齊。三項特性區隔了實用的工具與玩具。
第一,洗牌必須是無偏的。在小型列表上,以天真的「隨機挑選索引」迴圈可能會讓某些單字聚集;修正方法是 Fisher–Yates 演算法,它會走訪列表一次,將每個位置與之後隨機選取的位置交換。隨機單字產生器正是採用此方法,因此在每次抽樣中,每個合格單字的機率均等。
第二,抽樣必須是無放回的 (without replacement)。如果你要求 20 個單字,而工具卻把同一個單字交給你兩次,結果就是有瑕疵的。實作上是對一份新洗牌的詞庫取前 N 個項目,這保證了單一批次內的唯一性,同時讓下一次的 Generate 完全獨立。
第三,資料必須留在本地。伺服器端的隨機單字工具會把你的篩選選擇與結果送上網路,即使根本沒有必要。基於瀏覽器的產生器則把單字列表隨頁面一同載入,所有抽樣都在 JavaScript 中完成,因此即使離線也能運作,並且絕不會洩漏你查詢的內容。
結合這三項特性 —— 無偏的洗牌、批次內不重複、完全本地處理 —— 正是一個小巧而專注的工具,能取代 Python 腳本來處理單次抽樣的原因。
想深入了解,請參閱如何在 Word 中排序文字:複製貼上的工作流程。