若要從一份名單中產生隨機分組,請將您的名單貼到本機工具中,設定您想要的組數,讓一個公正的隨機排序把每個名字恰好分到一個隊伍裡。最終會得到一組大小平衡的小隊,相鄰組別的人數最多只差一人,即使總人數無法整除也是如此,因此您不必手動為第一組補人,也不用爭論誰算是那個被剩下的人。使用隨機隊伍產生器時,整個操作都在您目前的瀏覽器分頁中執行,使用該頁面內建的密碼學安全隨機來源,這代表名單絕不會在您按下按鈕之前、之中或之後被上傳、儲存到帳號,或傳送至伺服器。頁面在載入時不會偷偷選隊伍,也不會悄悄沿用先前的結果,因此每次按下「產生」按鈕,都是從全新的隨機來源重新抽籤。這種「輸出平衡」加上「全程在本機處理」的組合,讓同樣的工作流程適用於一份未成年學生的班級名單、一場同事的工作坊、一份志工報名表、一個遊戲夜的賓客名單,或任何您不想交給第三方服務處理的其他名字清單。它也能讓整個流程快到可以即時重做,無論是出席狀況改變、有人遲到,或房間裡有人要求重抽,都能立刻應對。

這個方法之所以能適用於這麼多日常情境,是因為底層的工作其實很單純。您有一份名單,您想把它分成指定數量的組別,您不想自己挑人,也不想當那個決定誰跟誰一組的人。一個可靠的本地工具能消除那種選擇的尷尬,讓每個名字出現在任何一組的機會完全相同。

generate random teams from a list
在不上傳姓名的情況下,從一份清單產生隨機隊伍

這個工具實際上做了什麼

「隨機隊伍產生器」是一個分組工具。它接收一份名單,產生數個較小的清單,限制是每個輸入項目在輸出中恰好出現一次,而且每個輸出清單的大小大致相同。它不是「清單隨機排序器」——那種工具只會改變單一清單的順序;它也不是「隨機名字挑選器」——那種工具是從清單中選出一位中獎者。這三種任務看起來相似,但解決的問題不同,把它們搞混通常意味著您最後得手動重抽。

工具類型輸入輸出使用時機
隨機隊伍產生器一份名字名單數個平衡的小組您需要把一屋子的人分成隊伍
清單隨機排序器一份名字名單以新順序排列的同一份名單您只需要一個新的進行順序
隨機名字挑選器一份名字名單一個被選中的名字您只需要一次挑選,而不是分組

弄清楚您要做的是哪一件事,比聽起來更重要。一個打亂過的順序並不會給您隊伍,一個單一中獎者也無法給您一個配對活動的搭檔。如果您只想要單一結果,較小的工具比較快、也比較清楚;如果您想要的是分組,能完成這件事的就是分組工具,而且它能讓各組大小保持相近,不會讓任何人明顯淪為被剩下的人。

如何從一份清單產生隨機隊伍

完整的工作流程很短,整個過程可以在同一個瀏覽器分頁中完成。每一步只負責一件事,步驟的設計讓您在眾人面前確認結果之前先驗證一下。

  1. 在瀏覽器中開啟「隨機隊伍產生器」頁面。
  2. 將您的名單貼到「名字」欄位中,每行一個名字,或用逗號分隔多個名字。空白行和多餘的逗號會被忽略,因此您可以為了可讀性而調整格式,不會破壞任何東西。
  3. 輸入您需要的隊伍數量。這個工具只接受不超過非空項目數的正整數,這能避免出現空白的隊伍,也讓結果一出現就能直接使用。
  4. 選擇「產生隊伍」。頁面會讀取所有非空項目、移除每個項目前後多餘的空格、執行一次公正的隨機排序,並把結果切成各組大小最多只差一人的小隊。
  5. 檢視顯示出來的隊伍。每個非空項目應該恰好出現一次,畫面上顯示的數量也應該與您預期的一致。
  6. 分享結果:可以大聲朗讀各組的名字、複製到聊天視窗或文件裡,或貼到白板或報名表上。如果出席狀況有變動,請編輯名單並重新產生,而不要手動把人在舊組別之間搬來搬去。

一個有用的習慣是:在分享您的螢幕之前,先決定好需要幾組。一旦名單貼好,先看一下頁面上顯示的名字數量,確認與您預期的一致,然後在眾人面前只產生一次。第二次按下按鈕會給您一次全新的抽籤,這在有人遲到、或有人因為遲到或抗議而要求重抽時很實用。

為什麼分組結果會保持平衡

這個工具使用 Fisher-Yates 洗牌演算法來重新排列名單,並在您按下「產生」的瞬間,從瀏覽器的Crypto.getRandomValues 來源取得隨機性。這種組合讓洗牌後陣列中的每個位置,持有任何一個名字的機率完全相同,這是保持抽籤公正的標準做法。洗牌完成後,工具會把重新排序後的清單切成您指定數量的組別,並隨機決定哪些組的標籤會獲得多出來的成員。

最終結果是一個乾淨的分組。十個人分成兩組時,兩組都會得到五個名字。十個人分成三組時,大小會落在四、三、三。七個人分成三組時,最大的組只比最小的組多一人,得到三、二、二的大小。最後這種情況,是大多數人工分組最容易出錯的地方,因為人們往往會把第一組補滿之後再處理下一組,留下不平均的餘數,也讓人清楚看出誰是最後才被分進去的那位。

因為隨機性是每次重新取得的,頁面絕不會沿用先前的結果。按鈕不會在頁面載入時偷偷挑選隊伍,也不會從上一次開啟分頁時快取一組結果。如果您想要不同的分組,只要再按一次「產生」,頁面就會根據同一份名單產生一份全新的分組。

如何整理您的名單以獲得乾淨的結果

工具接受兩種輸入格式,您可以根據名單原本的存放位置擇一使用。如果名字來自一份手打的清單,「每行一個名字」是最易讀的格式。如果名字來自試算表的某一欄,或電子郵件簽名區塊,以逗號分隔的字串通常比較快貼上。工具會自動修剪每個項目的前後空白,因此行首或行尾不小心多打的空格,不會造成看似空白的名字而干擾您看到的數量。

重複的名字會保留為重複的項目。這個行為有時很有用,例如在輕鬆的抽籤中想讓某個家庭算成兩次機會;但這也代表名單中若不小心多了一筆重複,該人中籤的機率就會默默變成兩倍。如果每個人都必須恰好出現一次,請在產生之前掃過一次名單,移除任何您不是故意重複的項目。

空白行和多餘的逗號會被忽略,這讓您可以把從筆記本或聊天串複製來的長清單直接貼上,不必事先清理。代價是您應該在按下「產生」之前先看一下頁面顯示的數量,因為頁面回報的是它實際讀到的非空項目數,而不是您貼上的行數。一份貼上後有五行空白夾雜著十個真實名字的清單,仍會被讀成十個。

何時隨機抽籤是正確的起點

當唯一的限制只是「人數」時,隨機抽籤最為好用。課堂上的練習分組、體育課的分隊比賽、破冰活動、讀書會、輕鬆的工作坊活動、遊戲夜、志工輪班,全都符合這個模式。在這些情境中,唯一重要的規則是各組人數大致相等,而且沒有人必須自願或被排在最後。透過工具抽籤所具備的透明隨機性,也免除了「做決定的人」所要背負的社交成本,因為那是工具做的決定,不是您。

當分組必須符合真實世界的限制時,僅靠隨機抽籤就不夠了。這個工具不會推斷技能、友誼偏好、無障礙需求、衝突、過去經驗、使用的語言或人口統計資料,因為這些都不在您貼上的那份名單裡。如果某個組別必須包含一位引導員、特定的技能組合、相容的時段、相當的經驗,或安全無虞的配對,您就需要在隨機分組之上再加上另一個規劃步驟。請把工具用在「隨機」這個部分,然後在指派會影響評核、薪酬、安全、法律義務或個人福祉的工作之前,用手動或其他方法再行調整。

一個實用的做法是:把原始名單另外保存,先產生一次分組,如果因為有人遲到而需要重抽,就再使用同一份原始名單。把「分組結果」當作起點而非最終決定,讓您同時保有隨機抽籤的速度與人工檢視的公平性,也能在有人詢問分組是如何決定時,提供一份清楚記錄原始名單的依據。

讓工具與活動的實際進行方式搭配

分組結果出現之後,活動的其餘部分通常就決定了這些名字要怎麼使用。若是簡短的破冰活動,只要大聲唸出每個隊伍並指向下一位發言者即可。若是時間較長的工作坊,把顯示出來的組別複製到共用文件或白板上,讓大家不必擠在螢幕前也能找到自己的組別。若是經常性的課堂活動,把產生的組別結果另外存一份在報名表中,當學生詢問自己被分到哪裡時,您就能回頭查詢。

如果活動有固定的結構,例如四站的輪站活動或兩兩一組的討論,請產生與該結構相符的分組。四站輪站需要四組;兩兩一組的討論需要兩人一組;拼圖式活動通常需要一個「原組」加上由教案決定人數的「專家組」。讓組數去配合活動,而不是先挑一個整數再想辦法把活動塞進去,這正是隨機抽籤在實務上感覺公平的最重要原因。

如需更深入的說明,請參閱將兩個字結合成一個混合名稱。

如需更深入的說明,請參閱依城市產生隨機 IP:安全 RFC 範圍說明。