🏪 小工具便利店

👥 隨機分組工具

貼上名單(一行一個名字),或直接輸入總人數,設定分組方式後一鍵隨機分組。適合老師課堂分組、團康活動、小組討論。

廣告・橫幅 728×90
請輸入名單或人數,然後點擊「開始分組」。
廣告・大型矩形 336×280

📖 使用說明

  1. 「名單」欄位貼上參加者姓名,一行一個;如果不需要真實姓名、只是想知道怎麼分組,可以留空,改用下方「總人數」欄位輸入總人數,系統會自動編號成「成員 1」「成員 2」……。
  2. 只要名單欄位有內容,「總人數」欄位就會被自動忽略,上方會即時顯示提示文字,告訴你目前偵測到幾筆名單。
  3. 「分組方式」選擇要「依組數分組」(直接指定分成幾組)還是「依每組人數分組」(指定每組要幾人,組數由系統自動算出)。
  4. 在旁邊的數字欄位輸入對應的組數或每組人數。
  5. 按下「開始分組」才會執行隨機分組——這一步需要手動點擊,不是輸入時就自動跑。
  6. 結果會以卡片方式呈現,每張卡片標示組別編號、該組人數與成員名單。
小提醒:當總人數無法被組數整除時,系統會採輪流分配的方式把打散後的名單依序發給各組,所以每組人數差距最多只會差 1 人,不會出現某組特別多人的狀況;另外每次按「開始分組」都會重新洗牌一次,同一份名單可以重複按,每次分組結果都不一樣。

📖 深入了解:這個隨機分組工具怎麼保證「公平」

用的是 Fisher-Yates 洗牌演算法,不是單純亂數排序

本工具的分組邏輯分兩步:先把整份名單徹底打亂順序,再依組數輪流發放。打亂順序用的是 shuffle() 函式實作的 Fisher-Yates 洗牌演算法——從名單最後一個位置開始,跟前面隨機一個位置交換,往前一路做到第二個位置為止。這個演算法的重點在於它是「均勻分布」的:每一種排列組合出現的機率完全相等,不會有些人因為原本排在名單前面或後面就比較容易被分到特定組別。很多人自己手動用「看感覺」分組,或用簡陋的排序方式(例如按名字字母排序後平均切)打亂,其實都不是真正均勻的隨機,容易不自覺帶入偏好。

輪流分配:如何在人數不能整除時仍然公平

洗牌後,工具用 shuffled.forEach((name, i) => groups[i % numGroups].push(name)) 這行邏輯把人依序輪流塞進各組,也就是第 1 個人進第 1 組、第 2 個人進第 2 組……輪完一輪再從第 1 組繼續。這保證了當總人數除以組數有餘數時,餘數會平均分散到前幾組,每組人數差距最多只有 1 人,不會出現「洗完牌從頭切一刀」導致最後一組人數特別少的狀況。這也是為什麼小提醒特別強調人數差距最多 1 人——這不是巧合,是演算法設計上刻意保證的結果。

「隨機」跟「公平」不是同一件事:常見的誤用情境

很多人想要的其實不是統計學上的隨機,而是「平衡的組別」,例如老師想讓每組都有能力好和能力弱的學生搭配、或活動主辦想讓每組性別比例平均。這種需求叫「分層抽樣」或「配對分組」,跟本工具做的單純隨機洗牌是兩回事——如果直接把全班名單丟進來隨機分組,理論上完全有可能出現某一組剛好都是成績好的學生、另一組剛好都是比較安靜的學生,這是隨機演算法正確運作下自然會發生的機率現象,不是工具出錯。如果需要能力或屬性平衡的分組,正確做法是先手動把人依屬性分成幾個子名單(例如按成績高中低分三批),每批各自用本工具隨機分組後再合併,這樣才能兼顧「組內隨機」與「組間平衡」。

實際操作範例

假設你是老師,班上有 23 位學生,想分成 4 組進行課堂討論。把「分組方式」設為「依組數分組」、右邊數字填 4,貼上 23 個學生姓名後按「開始分組」。23 除以 4 商 5 餘 3,所以會有 3 組各 6 人、1 組 5 人——差距正好符合小提醒說的最多差 1 人。如果你更在乎每組人數固定為 5 人、組數多少無所謂,就改選「依每組人數分組」、填 5,工具會自動算出需要 5 組(23÷5 無條件進位=5),最後一組人數會比其他組少。兩種模式的差別在於你是「先定組數」還是「先定組內人數」,可以依實際場地或活動需求選擇。

❓ 常見問題

這個工具是真的隨機,還是看起來隨機而已?

是真正的隨機。分組使用 Fisher-Yates 洗牌演算法,底層依賴 JavaScript 的 Math.random(),每一種排列出現的機率理論上完全相等,不會偏向名單中特定位置的人。同一份名單重複按「開始分組」,每次結果都會不同。

我貼的名單或分組結果會被記錄到伺服器嗎?

不會。整個分組運算都在你的瀏覽器本機用 JavaScript 完成,頁面沒有任何把名單或結果傳送到伺服器的程式碼,關掉分頁或重新整理,所有資料就會消失,不會留下紀錄。

為什麼分出來的組別,人數不完全一樣多?

只有在總人數剛好能被組數整除時,每組人數才會完全相同。無法整除時,工具採輪流分配的方式,讓多出來的人平均分散到前面幾組,最多只會有 1 人的差距,這是為了盡量公平而設計的邏輯,不是分組出錯。

可以指定某兩個人一定要(或一定不要)分在同一組嗎?

目前的版本不支援指定特定成員的分組限制,每次分組都是對整份名單做均等隨機分配。如果有這種需求(例如避免特定學生分在同一組),建議的做法是先手動把這些人排除、剩下的人先分組,再手動把被排除的人分別加進不同組別。

名單留空、只填總人數會發生什麼事?

系統會依你填的總人數自動產生「成員 1」「成員 2」……這樣的編號名單,再照樣進行隨機分組。這適合只是想預覽分組結果、還沒有實際名單的情境,例如場地或活動人數還沒確定名字時先抓感覺。

廣告・橫幅 728×90