清單隨機排序
把名單貼進來,一行一個,馬上得到公平的隨機順序。人名、待辦事項、歌曲、抽獎名單都可以。
結果
在左邊貼上名單,再按隨機排序。
- 抽籤決定報告順序貼上全班或組員名單,打亂後的號碼就是上台報告、口試的順序,誰都沒話說。
- 抽獎名單貼上參加者的暱稱,先去除重複避免一人多抽,再取前 N 個當得獎者,後面的依序遞補。
- 選秀、輪流順序球隊選人、桌遊座位、KTV 點歌、打掃輪值,一次排好。
- 歌單與讀書順序打亂歌曲、單字卡或複習章節,不要每次都從第一章開始念。
三步驟打亂一份名單
貼上名單
每行一項。從 Excel 或 Google 試算表複製一整欄,貼上就會是一行一個。名單會存在這個瀏覽器,下次打開還在。
整理一下
抽獎、抽籤時建議開著去除重複;去掉空白和空行會自動略過多餘的空格。
隨機排序
可以全部打亂、只取前 N 個,或分成幾組。複製有編號的結果貼到 LINE 群組,或放上轉盤現場轉。
經得起檢驗的隨機順序
為什麼用 Fisher–Yates,而不是「用亂數排序」
很多人在 Excel 或程式裡打亂名單,是讓排序的比較函式隨機回傳正負。看起來很亂,其實不公平。排序演算法預設比較結果前後一致,一旦比較是隨機的,某些元素就會特別容易出現在某些位置。名單只有五個人時,有人留在原位的機率可能遠高於五分之一。
Fisher–Yates 洗牌則是從最後一個位置往前,每一步把目前位置和它前面(含自己)隨機選到的位置交換。n 個元素共做 n−1 次隨機選擇,可選範圍依序是 n、n−1……剛好得到 n 階乘種結果,每一種排列一一對應、機率相等。
公平與否也取決於亂數本身。本工具以 crypto.getRandomValues 搭配拒絕取樣產生隨機整數,在 7 個位置裡選一個就是精確的七分之一,不會因為取餘數而偏向某幾個。
| 方法 | 每種順序機率相同嗎 | 說明 |
|---|---|---|
| Fisher–Yates + 無偏隨機整數 | 是 | 本工具使用的方法,名單再長都很快。 |
| 隨機比較函式排序 | 否 | 結果取決於瀏覽器的排序實作,前面的元素常常不太動。 |
| Excel 加一欄 RAND() 再排序 | 大致是 | 每列一個固定亂數時公平,但 RAND() 每次編輯都會重算。 |
| 紙條抽籤 | 是,前提是有搖勻 | 事後很難證明,紙條也容易黏在一起。 |
選擇合適的輸出方式
三種方式都來自同一次隨機打亂,所以取前三個和一個一個抽三次一樣公平。
| 需求 | 方式 | 小提醒 |
|---|---|---|
| 報告、口試、輪流順序 | 全部打亂 | 複製有編號的結果,直接貼到班群或工作群組。 |
| 從名單抽出得獎者 | 取前 N 個 | 先去除重複。排在 N 之後的就是現成的遞補名單。 |
| 分小組、分隊 | 隨機分組 | 設定的是組數不是每組人數。23 人分 4 組就是 6、6、6、5。 |
| 想要現場揭曉 | 任一方式後放上轉盤 | 先打亂候選名單,再在投影幕上轉出最後結果。 |
用名單辦一場公平的抽獎
- 把參加者暱稱整理成一欄,一行一個,例如從 Google 表單回覆或留言整理複製過來。
- 活動規則是每人限一次時開著去除重複;如果有人依規則拿到多次機會,就取消勾選。
- 選擇取前 N 個,填入獎項數量。
- 全程錄影,或截圖保存完整結果,包含得獎者後面的遞補名單。
- 得獎者逾期未回覆時,依打亂後的順序遞補下一位,不要重新抽。
要抽的是留言區的人?留言抽獎工具可以自動幫你整理參加名單。
常見問題解答
怎麼把名單隨機打亂順序?
把名單貼進來,一行一個,按下隨機排序就好。結果會列出每一項的新順序和編號,再按一次就換新的順序。
打亂的結果真的隨機嗎?
是的。採用 Fisher–Yates 洗牌演算法,亂數來自 crypto.getRandomValues,名單的每一種排列出現機率完全相同。
可以先去除重複的名字再打亂嗎?
可以,去除重複預設是開啟的。比對時忽略大小寫和多餘空格,並會告訴你略過了幾行重複內容。
只想從名單抽出幾個人怎麼辦?
把輸出方式切到取前 N 個,填入要抽的人數。結果是打亂後的前 N 位,等於不放回地抽 N 次。
可以把名單隨機分成幾組嗎?
可以。選擇隨機分組並設定組數,打亂後依序輪流分到各組,各組人數盡量平均。
下次打開名單還會在嗎?
在同一台裝置的同一個瀏覽器會保留,只存在本機,不會上傳。按清除即可刪掉。
名單最多可以幾行?
幾千行都沒問題。只有放上轉盤時最多取前 100 項,因為扇形太多會看不清楚。