不會——你貼到隨機姓名挑選轉盤上的姓名不會被上傳到任何地方、不會被送到伺服器、不會被記錄,也不會儲存在你的瀏覽器分頁之外。隨機姓名挑選轉盤以用戶端 JavaScript 執行,這代表每一個步驟——讀取你輸入的清單、挑選贏家、顯示結果——都透過瀏覽器引擎在你的裝置本機完成。你的瀏覽器密碼學亂數產生器透過 crypto.getRandomValues 提供旋轉所需的熵,被選中的姓名會直接在轉盤下方高亮顯示。沒有表單提交、沒有夾帶你名單的 API 呼叫、沒有附加學生或員工姓名的分析酬載,也沒有資料庫寫入。這個頁面不要求帳號、不要求電子郵件,也不會設定與你清單綁定的追蹤 cookie。當你關閉分頁時,保存你姓名的 JavaScript 變數會被瀏覽器的記憶體管理機制釋放,輸入欄位也隨之消失。伺服器上沒有任何東西會保存,因為從頭到尾根本沒有任何東西被送到伺服器。這就是隱私契約:輸入、旋轉、看到贏家、關閉——你的清單從未出現在螢幕以外的地方。

「上傳」對隨機姓名挑選器來說究竟代表什麼
當有人詢問他們輸入的姓名是否會被上傳時,他們通常擔心三件具體的事:清單會被送到遠端伺服器、清單會被儲存在操作者日後可以讀取的資料庫,或清單會被悄悄打包進被彙整出售的分析資料。這三種都是合理的擔憂,也描述了大多數網路工具的預設行為。典型的線上表單會接收你的輸入、提交到後端、在資料庫寫入一筆資料、回傳結果,並且過程中可能還會向第三方分析服務商觸發追蹤事件。在你看到結果之前,姓名會經過好幾個由他人擁有的系統,而這就是要拿來對照的務實基準。
隨機姓名挑選轉盤是不同形態的工具。它要做的事——從一份清單中抽出一個項目——小到足以完全放進一個頁面裡。姓名沒有理由要繞一圈到伺服器,而一個製作良好的挑選器也不會走那趟來回。這個差異就是隱私問題的完整答案,但值得點出底層實際發生的事,讓你也能自行辨認差異。
隨機姓名挑選轉盤如何讓你的清單留在本機
隨機姓名挑選轉盤的設計方式是,唯一會接觸你清單的程式碼只會在你的瀏覽器分頁中執行。當你在欄位中輸入或貼上姓名時,瀏覽器會把這些值儲存在頁面的 Document Object Model 中——一個只存在分頁開啟期間的記憶體物件樹。轉盤動畫、旋轉邏輯和贏家高亮顯示都從那個本機樹狀結構讀取。抽籤本身並不使用許多腳本依賴的一般 Math.random 函式,而是呼叫 crypto.getRandomValues——和登入流程用來產生權杖的同一個 Web Crypto API——並套用一種稱為拒絕採樣(rejection sampling)的技術來消除模數偏誤,也就是當範圍無法整除清單大小時產生的細微偏差。簡單來說,當轉盤上有 N 個姓名時,每個姓名的機率都是剛好 1/N。這個分配已經透過數萬次模擬旋轉驗證,確認保持統計上的均勻,沒有隱藏的權重,也沒有莊家優勢。
因為亂數來自你自己的裝置,且結果在本機渲染,抽籤過程不需要任何來回。頁面上沒有任何地方呼叫 fetch 或 XMLHttpRequest 把你的名單透過公開網路送出去。沒有註冊表單、沒有電子郵件蒐集、也沒有任何浮水印把結果綁回你從未建立的帳號。瀏覽器的 Network 分頁會記錄頁面發出的每一個請求,而旋轉過程中那個分頁完全是空的。這就是「姓名從未離開分頁」最直接的證據。
如何在不送出姓名的情況下抽出贏家
- 在瀏覽器中開啟隨機姓名挑選轉盤。頁面只會載入一次,然後就停在那裡;你不需要安裝任何東西,也不需要建立帳號。
- 把姓名輸入或貼到輸入框中,每行一個姓名。空白行會自動略過,所以從試算表貼過來的零散空行不會影響抽籤。如果你想讓某人有多次機會,重複的姓名會被保留。
- 點擊「Spin the wheel」按鈕。轉盤會旋轉並減速,直到停在單一隨機贏家上,該贏家會直接在轉盤下方高亮顯示。
- 如果你想在不重複的情況下抽出多個贏家——例如出場順序或排名獎項——請在下次旋轉前勾選「Remove winner after each pick」核取方塊。每個贏家會自動從轉盤上移除,所以後續的旋轉絕對不會再次落到同一個姓名。
- 依需要繼續旋轉。結束後,關閉分頁。瀏覽器會釋放保存你清單的記憶體,沒有任何東西需要清除、登出或刪除。
在任何隨機挑選器中應該尋找的隱私跡象
如果你在評估另一款姓名挑選器,想知道它是否會上傳你的清單,實用的檢查清單很短。隨機姓名挑選轉盤的設計就是要滿足清單上的每一項。
| 隱私跡象 | 本挑選器的做法 |
|---|---|
| 旋轉的執行位置 | 在使用者分頁內以用戶端 JavaScript 執行 |
| 旋轉期間的網路請求 | 無——挑選贏家時頁面不會呼叫任何伺服器 |
| 帳號或註冊 | 不需要、不會要求、也不會暗示 |
| 分頁關閉後是否儲存清單 | 無——關閉分頁即釋放記憶體中的清單 |
| 亂數來源 | 瀏覽器的 Web Crypto API(crypto.getRandomValues) |
| 偏差處理 | 套用拒絕採樣以消除模數偏誤 |
| 把輸出與你綁定的浮水印 | 無 |
| 姓名或旋轉次數的上限 | 無——幾個姓名或數百個姓名皆可使用 |
任何一項檢查不通過的工具,都在傳送或保留超出它所需的內容。一款挑選器如果在顯示轉盤前要求登入、每次旋轉後重新載入、在結果上放置帶有追蹤的分享連結,或警告你「你的轉盤已儲存到雲端」,那麼即使它從未明說伺服器的存在,也正在進行某種上傳或遠端儲存。完全相反的模式——立即載入、不需登入、不重新載入、網路記錄為空——才是真正以用戶端方式運作的挑選器。
隱私保證最關鍵的時刻
姓名挑選器的隱私並非抽象的偏好。對於某些清單來說,把它們上傳到第三方伺服器是一個真實的問題,後果從尷尬到具法律責任都有可能。
- 學生名單。進行隨機點名、報告順序或「今天誰是排頭」抽籤時,老師處理的是未成年人資料。學校對於學生姓名可以傳送到哪裡有正式的政策,而把班級名單貼進一個會悄悄把資料送到後端的工具,會創造出原本不存在的紙本紀錄。
- 員工姓名。由人資主導的抽獎——例如節日禮物、停車位或「公司請客吃午餐」的決定——涉及內部人事資料。即使只是短暫地把廠商的隨機抽籤工具當作系統紀錄,也會引發法務團隊不樂見被詢問的爭議。
- 抽獎與贈品參加者。活動名單通常包含真實的人,他們並未同意讓無關的第三方處理自己的姓名。在本機執行的工具代表這些姓名永遠不會接觸到主辦者機器以外的系統。
- 敏感的團隊指派。決定誰先報告、誰回答棘手的客戶問題、或誰值冷門班次,正是清單不該外洩的時刻。保持本機處理,就能讓尷尬留在網路之外。
對於上述所有情境,運作原則都相同:如果工具的隱私立場不明,就不要把真實姓名貼進去。選用契約明定「一切都在你的裝置上完成」的挑選器,你就不必再進一步調查。
公平性可以驗證,而不僅是信任
隱私只是信任的一半。另一半是贏家是否真正隨機,因為一個悄悄偏袒清單中第一個姓名的工具,比上傳更糟糕——它在私下產生了被操控的結果。隨機姓名挑選轉盤直接處理了這個問題。抽籤使用的是你瀏覽器的密碼學亂數產生器,這是與產生工作階段權杖和加密金鑰同一等級的來源。為了消除清單大小無法整除輸出範圍時出現的小但真實的偏差,挑選器套用了拒絕採樣:會造成偏差的值會被捨棄,並重新抽籤。經過這一步,轉盤上每個姓名的中獎機率都恰好是 1/N,無論它的位置或相鄰的姓名是誰。這個分配已經透過數萬次旋轉模擬驗證,確認保持均勻,所以公平性的主張不只是聲明,而是已經經過測量。
把兩者合在一起看,這兩項特性是一組。抽籤私密但有偏差,仍然不公平;抽籤公平但上傳了你的班級名單,仍然不安全。這個轉盤同時具備兩者:用戶端執行、密碼學亂數、偏差校正,以及沒有網路往返。你可以拿到一個能投影到螢幕、貼到聊天或大聲唸出來的贏家,卻從未把背後的清單分享給房間裡原本就在的人以外的任何人。
如果你正在權衡選項,如何在 JavaScript 中產生隨機數對此有深入的介紹。
如果你正在權衡選項,如何在本機產生均衡的隨機隊伍對此有深入的介紹。