決策輪盤
讓輪盤幫你做選擇,告別選擇困難症
暫無記錄,轉盤轉起來吧
什麼是決策輪盤?
決策轉盤會從輸入列表中隨機選擇一個選項,把小型選擇變成可見、共享的過程。它適合課堂活動、團隊互動、吃什麼、簡報順序、輕量抽獎、腦力激盪,以及多個選項都差不多可接受的情境。它的價值在於減少選擇疲勞,讓抽選過程更透明。但當選項之間存在不同風險、成本、公平規則或責任時,轉盤不能取代判斷。用於正式抽獎時,應提前明確參與名單、權重、排除條件和記錄方式,保證結果可解釋。它最適合低風險、大家都接受隨機性的決定。
使用方法
使用說明
- 在輸入框中輸入選項名稱,按 Enter 或點選「加入」
- 新增多個選項(最多 15 個),每個選項以 20 個字元為限
- 點選中央的「旋轉」按鈕,轉盤隨即開始轉動
- 待轉盤停止後,查看隨機選出的結果
公平性提示
- 選項請保持簡短且長度相近,讓參與者在轉盤啟動前都能清楚辨識。
- 面對重要決策,請在旋轉前先確認選項清單,並避免在看到不理想的結果後再行更改。
使用場景
技術原理
輪盤是以 Canvas 2D 繪製,搭配確定性隨機選取。每個區塊以 ctx.beginPath(); ctx.moveTo(cx, cy); ctx.arc(cx, cy, r, startAngle, endAngle); ctx.fill() 繪製,其中 N 個等分選項各佔 2π/N 弧度——十五個區塊即每個 24 度弧,這也是輸入上限為 15 的原因,以保持標籤可讀性。中獎區塊在動畫開始前就已決定:透過 crypto.getRandomValues(new Uint32Array(1))[0] 產生 32 位元無符號整數,取模 N 後即為答案。動畫計算目標旋轉角度為 fullSpins × 2π + (2π − winnerIndex × sliceAngle − sliceAngle/2),使畫布頂部的指標最終指向所選區塊的中心,並在 requestAnimationFrame 中使用緩動曲線(如 easeOutCubic f(t) = 1 − (1−t)³ 或 easeOutBack 產生輕微超調以模擬物理輪盤減速)來補間。crypto.getRandomValues 是 Web Crypto CSPRNG(於 Web Crypto API 規範中定義),以作業系統熵池作為種子,因此與 Math.random 不同,選取結果無法透過讀取頁面狀態來預測。加權變體建立長度為 N 的累積機率陣列,並以 O(log N) 二元搜尋對隨機抽樣進行映射。輸出完全為視覺且短暫——不會記錄任何內容,因此任何稽核軌跡(時間戳、選項清單、截圖)必須在頁面重新整理前外部擷取。
- Canvas 繪製:每個區塊為 ctx.arc(cx, cy, r, startAngle, endAngle),sliceAngle = 2π / N——15 個選項每區塊 24 度,為實際可讀性的上限。
- 中獎選取使用 crypto.getRandomValues(new Uint32Array(1))[0] % N——Web Crypto CSPRNG,以作業系統熵為種子,適用於公平的單次抽選,但不適用於可重播的抽獎(無稽核軌跡)。
- 動畫在 requestAnimationFrame 中以顯示重新整理率(通常 60 Hz)執行,使用 easeOutCubic f(t) = 1 − (1−t)³ 或 easeOutBack 產生輕微超調——曲線為裝飾性,中獎者已預先決定。
- 最終旋轉角度為 targetRotation = fullSpins × 2π + (2π − winnerIndex × sliceAngle − sliceAngle/2),使頂部指標落在區塊中心而非邊緣。
- 加權選項模式建立權重的前綴和陣列,並使用二元搜尋將均勻隨機數映射到區塊,時間複雜度 O(log N)——等同於反累積分布函數取樣。
- 當 N ≤ 15 且抽樣範圍為 2³² 時,模偏差可忽略不計(偏差約 N / (2 × 2³²) ≈ 1.7×10⁻⁹),因此無需拒絕取樣迴圈。
- 每次旋轉為獨立同分佈——連續旋轉可重複相同選項,這是正確的均勻行為而非錯誤;跨旋轉去重需要外部記錄。
範例
決定午餐
選項:披薩、壽司、漢堡、墨西哥捲、沙拉 → 旋轉 → 結果:壽司團隊活動
選項:保齡球、卡拉 OK、密室逃脫、迷你高爾夫 → 旋轉 → 結果:密室逃脫電影之夜
選項:動作、喜劇、恐怖、愛情、科幻 → 旋轉 → 結果:喜劇常見問題
轉盤旋轉真的是隨機的嗎?
是的。被選中的扇區是由 crypto.getRandomValues 決定後,再讓轉盤動畫停在那一格。視覺上的旋轉只是表演 — 結果其實事先就決定好了。每次旋轉都與前一次無關。
所有扇區的機率都一樣嗎?
是的。每個選項取得相同大小的扇區,每個扇區機率相等。沒有加權或偏向模式 — 所有選項被選中的機率完全相同。
旋轉動畫會影響結果嗎?
不會。動畫只是裝飾 — 結果會先計算出來,轉盤再旋轉到該位置。即使你提前停止動畫,被選中的扇區仍是同一個。
可以跨工作階段儲存轉盤設定嗎?
不行。選項只在目前工作階段儲存。關閉分頁或重新整理會遺失清單。如果之後還要用,請在關閉前先複製選項。
我該用它來做重要決定嗎?
建議用在低風險的群體選擇(午餐、上台順序、選秀順位)這類任何選項都可接受、可見的隨機性能避免不愉快的場合。不要把不同選項後果差異很大的決定交給它 — 轉盤無法權衡得失。
為什麼有時候會連續兩次選到同一個選項?
每次旋轉都是獨立的。三個選項時,連續兩次選到同一個的機率為 1/3 ≈ 33%。十個選項時為 10%。重複看起來奇怪,但對真正的隨機選取而言在數學上是預期內的。
我的選項清單會被上傳嗎?
不會。轉盤完全在你的瀏覽器中執行。若你選擇儲存,選項會留在本機;不會傳送到伺服器。