轉盤怎麼用
- 在下方的框框輸入選項,一行一個。預設是「今天吃什麼」的範例,可以直接改。
- 按「開始轉」,或直接點轉盤。轉盤會先快後慢,停下來時指針(上方的藍色三角形)指到的就是結果。
- 結果會跳出視窗。想再抽一次就按「再轉一次」。
- 要連續抽、而且抽過的不要再抽,勾選「抽中後自動移除」。
讓某些選項機會大一點
在選項後面接星號和數字,就是這一項的權重。例如:
- 拉麵*3:拉麵被抽中的機會是一般選項的 3 倍,扇形面積也是 3 倍大。
- 便當:沒寫數字就是 1。
- 火鍋*0.5:權重可以是小數,這個例子是一般選項的一半機會。
機率的算法是這一項的權重除以所有權重的總和。像上面三項加起來是 4.5,拉麵的機率就是 3 ÷ 4.5,約 67%。
哪些情況適合用轉盤
- 吃什麼、去哪裡:午餐、晚餐、週末去哪玩,吵不出結論就交給轉盤。
- 公平地決定誰先、誰做:輪流報告、分配值日、誰請客、誰負責洗碗。
- 班級和活動抽獎:把名字貼進來,勾選「抽中後自動移除」,一個一個抽出得獎者,不會重複。
- 遊戲和課堂:真心話大冒險、點名答題、挑選報告順序。
- 是或否:選項只放「是」「否」,也可以設不同權重做成不公平的轉盤。
選項怎麼存、怎麼分享
你輸入的選項會存在這支瀏覽器的 localStorage,下次用同一支瀏覽器打開這個頁面還在。這是存在你自己的裝置上,不會上傳到任何伺服器。換瀏覽器、換裝置、用無痕模式或清除網站資料,選項就不會跟過去。
想把同一組選項給別人,按「複製分享連結」。選項會編在網址 # 後面,對方打開連結就看到一樣的轉盤。這段內容只在瀏覽器裡處理,不會送到我們的伺服器;不過你把連結貼給誰、貼到哪裡,就要自己斟酌,因為拿到連結的人看得到裡面的所有選項。
轉盤是怎麼決定結果的
按下「開始轉」的當下,程式先用瀏覽器內建的安全亂數函式 crypto.getRandomValues 產生一個 0 到 1 之間的數字,依照各選項的權重比例對應到某一個選項,結果在那一刻就決定了。接著程式算出轉盤要停在哪個角度,用動畫轉給你看。所以轉盤動畫的速度、你什麼時候點、轉了幾圈,都不會影響結果。亂數沒有使用 Math.random,也沒有任何一次抽選會送到伺服器。
常見問題
這個轉盤是真的隨機嗎?會不會有人動手腳?
是真的隨機。轉盤一按下去,程式先用瀏覽器內建的 crypto.getRandomValues 抽出結果,再算出轉盤該停在哪個角度,動畫只是把這個結果轉給你看。沒有伺服器參與,我們也沒辦法替你選結果。要注意的是,每一次轉都是獨立的,連續抽到同一項是正常現象,不代表轉盤壞掉。
怎麼讓某個選項比較容易被抽中?
在選項後面加上星號和數字,例如「拉麵*3」,代表它被抽中的機會是一般選項的 3 倍,轉盤上的扇形也會跟著變大。想要「同一個選項出現 3 次」的效果,用 *3 就是一樣的意思,不用把同一行貼三遍。沒有寫數字的選項,權重都是 1。
怎麼連續抽,抽到的人就不再被抽到?
勾選「抽中後自動移除」,每次抽完,被抽到的那一項就會從名單裡拿掉,下一輪只剩沒抽過的。適合抽獎、排順序、分配工作。全部抽完之後,可以按「還原預設」或重新貼上名單。如果想一次抽出好幾位不重複的人,也可以用抽籤工具,一次抽 N 位。
我輸入的選項會被上傳嗎?下次打開還在嗎?
不會上傳。選項只存在你自己這支瀏覽器的 localStorage 裡,所以下次用同一支瀏覽器打開還會在;換手機、換電腦、用無痕視窗,或清除瀏覽器資料,就會回到預設範例。如果你想把同一組選項給朋友,可以按「複製分享連結」,選項會編在網址裡,只有拿到連結的人看得到,也不會經過我們的伺服器。
選項很多的時候,轉盤上的字會看不清楚怎麼辦?
選項超過 20 個左右,扇形會很窄,太窄的扇形不會顯示文字,但抽中時還是會在彈出的結果視窗裡完整顯示。選項很多時,建議改用抽籤工具直接抽出名字,或先用「打亂順序」分批抽。選項文字太長時,轉盤上會截短顯示,結果視窗會顯示完整內容。
運作原理
本頁所有功能都在你的瀏覽器裡執行,選項文字不會傳到伺服器。抽選使用 Web Crypto API 的 crypto.getRandomValues(瀏覽器內建的密碼學等級亂數來源),每次抽選取 53 位元的隨機數換算成 0 到 1 的小數,再依權重比例落點選出結果。轉盤用 HTML canvas 繪製,轉動動畫由 requestAnimationFrame 逐格更新。