清單隨機化器
貼上一個列表(每行一個項目),然後我們使用加密品質的隨機性將其打亂為新的隨機順序。
Alice
Bob
Charlie
Dana → Charlie
Alice
Dana
Bob
貼上一個列表(每行一個項目),然後我們使用加密品質的隨機性將其打亂為新的隨機順序。
Alice
Bob
Charlie
Dana → Charlie
Alice
Dana
Bob
清單隨機產生器可以獲得任何清單——姓名、任務、團隊、抽獎條目、集思廣益的想法——並使用 Fisher-Yates 演算法。每個排列都有相同的可能性,每次隨機播放都是獨立的,您的清單永遠不會離開您的瀏覽器。
使用它來進行選秀、抽獎順序、隨機分配雜務、選擇遊戲中的第一名,或者只是從前 N 名列表中消除您自己的偏見。
貼上您的參賽列表,點擊“轉換”,最上面一行就是您的獲勝者。重新運行以獲得第二名、第三名等。比旋轉賽車簡單得多。
有夢幻聯賽或臨時比賽名單嗎?貼上玩家列表,隨機播放,然後從上到下讀取順序。
組建演示順序、評審團或會議演講陣容?重新排列清單以消除無意識的偏袒。
陷入選擇之間?列出它們,洗牌,取第一個。隨機性戰勝了決策癱瘓。
隨機化問題順序,以便受訪者無法錨定第一個項目。貼上、隨機播放、再貼回來。
列表隨機化器使用 費雪-耶茨洗牌 (也稱為 Knuth shuffle)以生成輸入行的均勻隨機排列。該算法從最後一個元素迭代到第一個元素,將每個元素與剩餘未洗牌部分中隨機選擇的元素交換。對於加密品質的隨機性,該工具利用 crypto.getRandomValues() (透過 Web Crypto API)而不是 Math.random()。這確保了每次洗牌都是獨立的、不可預測的,並且適合公平抽獎或安全敏感的比賽。核心循環在 O(n) 時間內運行,保證 n!可能的排序是等機率的。僅列表順序發生變化;沒有資料傳輸到任何伺服器。
雖然許多方法都可以隨機化列表,但列表隨機化器提供了一種無需離開瀏覽器的無摩擦、加密安全的方法。
| 這個工具 | Python 的 random.shuffle() | 電子表格 RAND() + 排序 | |
|---|---|---|---|
| 隨機性來源 | 加密(Web 加密 API) | 梅森扭曲者 (PRNG) | 浮點 PRNG |
| 易於使用 | 無需設定:貼上並點擊 | 需要Python安裝和程式碼 | 需要公式和手動排序 |
| 再現性 | 無種子;每次洗牌都是獨立的 | 可以播種以獲得可重複的結果 | 播種並不簡單 |
| 安全性 | 適用於抽獎和彩票 | 不加密安全 | 不加密安全 |
費雪-耶茨洗牌 (Fisher-Yates shuffle) 以羅納德·費雪 (Ronald Fisher) 和弗蘭克·耶茨 (Frank Yates) 的名字命名,首次在他們 1938 年的書中描述 生物、農業和醫學研究統計表。唐納德·高德納 (Donald Knuth) 後來在 電腦程式設計的藝術 (第 2 卷,1969 年)。該演算法的持久吸引力在於其簡單性以及在線性時間內產生無偏排列的能力——這是隨機演算法和此類工具的基礎構建塊。
它使用 JavaScript 的 Math.random() 透過 Fisher-Yates 演算法——每個排列都有相同的機率。它在加密上不安全(不要用於安全目的),但對於抽獎、選秀和決策來説它是完全公平的。
不——它保留重複項。如果「Alice」出現兩次,則兩個副本都會出現在輸出中。使用我們的 刪除重複行 如果您想要獨特的條目,請先使用工具。
測試了多達 50,000 條線路,沒有減速。除此之外,瀏覽器可能會凍結一會兒,但它仍然可以工作。
否 - 空白行在打亂之前被過濾掉。如果您想要保留空白行作為分隔符,請先用佔位符取代它們。