拋硬幣工具
線上模擬拋硬幣,隨機產生正面或反面
什麼是拋硬幣工具?
拋硬幣工具模擬只有兩種結果的隨機選擇:正面或反面。它適合處理低風險、兩邊都能接受的小決定,例如誰先開始、先審哪份稿、走哪條路、遊戲裡誰先手等。線上拋硬幣的優點是方便、結果清楚,並能記錄最近幾次結果、連續次數與正反面比例。公平硬幣在大量次數下會接近 50/50,但少量樣本出現連續正面或反面很正常,這是概率波動。此工具適合日常決策、課堂概率示範與輕量遊戲,不適合正式抽獎、法律決定、獎品發放或需要身分驗證的情境。
使用方式
使用方法
- 點選「擲硬幣」按鈕開始
- 觀看硬幣翻轉動畫並等待結果
- 查看結果(正面或反面)
- 歷史記錄會自動統計正面與反面的次數及百分比
- 點選「清除記錄」重置所有統計
隨機性說明
- 結果僅供休閒決策參考;瀏覽器的隨機性適用於娛樂,不適用於賭博、安全性或正式抽獎。
- 若多人依賴此結果,開始前請先約定是否採計歷史記錄或重複翻轉。
使用場景
技術原理
每次拋擲從 crypto.getRandomValues(new Uint8Array(1)) 取得一個位元組,並檢查低位元:0 對應反面,1 對應正面。WHATWG Web Cryptography 規範要求 Web Crypto API 的位元組必須來自加密安全的偽隨機數產生器(CSPRNG),通常由作業系統的熵池支援(Linux 的 getrandom、Windows 的 CryptGenRandom/BCryptGenRandom、macOS/iOS 的 SecRandomCopyBytes)。Math.random() 被明確定義為非加密用途,返回一個來自未指定演算法的 53 位元雙精度浮點數(V8 中使用 xorshift128+),可觀察到偏差且能從少量樣本輸出中預測,因此本工具不使用它進行每次拋擲的決策。 根據強大數定律,正面的經驗比例會隨著試驗次數 N 的增長趨近於 0.5,但對於有限的 N,二項式分布 Bin(N, 0.5) 的變異數為 N x 0.25,標準差為 0.5 x sqrt(N) 個正面。當 N = 100 時,95% 信賴區間為 50 +/- 10,因此觀察到 60/40 的分配完全在正常變異範圍內,不能作為產生器偏差的證據。連續出現遵循幾何分布在 N 次拋擲中某處出現至少 k 次連續正面的機率約為 1 - (1 - 0.5^k)^(N-k+1),這意味著在 100 次拋擲中出現 6 次連續的機率約為 17%——同樣是正常現象,並非可疑。 硬幣動畫由 requestAnimationFrame 驅動,與瀏覽器重繪週期同步(通常為 60 Hz,每幀 16.67 毫秒,120 Hz 顯示器上更高),歷史記錄透過 localStorage 持久化,使連續計數器在同一來源的頁面重新整理後仍能保留。對於真正的加重物理硬幣,統計上有意義的檢測大約需要 10,000 次試驗才能以 95% 的信賴度偵測到 1% 的偏差;本工具的 CSPRNG 來源消除了數位拋擲的這一問題。對於高風險抽獎或具有法律約束力的抽籤,建議使用可審計的第三方 RNG 服務或經過認證的硬體 RNG,因為瀏覽器端的隨機性不會留下可外部驗證的記錄。
- crypto.getRandomValues 從 CSPRNG 填充 Uint8Array;Math.random 非加密用途,可被預測。
- 決策規則:byte & 1,位元 0 對應反面,位元 1 對應正面(單一位元上的均勻 50/50 分配)。
- Bin(N, 0.5) 變異數為 0.25 x N;100 次拋擲中 60/40 的分配完全在 +/-2 個標準差的正常變異範圍內。
- 以 95% 信賴度偵測 1% 偏差的物理硬幣需要約 10,000 次試驗,遠超課堂樣本量。
- 動畫由 requestAnimationFrame 以顯示器刷新頻率驅動(通常每幀 16.67 毫秒)。
- 連續計數器和歷史記錄透過 window.localStorage 持久化,僅限當前來源。
- 瀏覽器端隨機性不會留下可外部審計的記錄;法律抽籤請使用經過認證的 RNG 服務。
範例
10 次擲幣序列(單一場次)
第 1 次 -> 正面
第 2 次 -> 反面
第 3 次 -> 反面
第 4 次 -> 正面
第 5 次 -> 正面
第 6 次 -> 正面(連續:3)
第 7 次 -> 反面
第 8 次 -> 正面
第 9 次 -> 反面
第 10 次 -> 反面
統計:正面 5(50%),反面 5(50%)100 次擲幣統計(典型結果)
總擲幣次數 :100
正面次數 :52 (52%)
反面次數 :48 (48%)
最長正面連續 :6
最長反面連續 :5
觀察 :少量樣本鮮少剛好落在 50/50。三戰兩勝 - 決定誰付帳
A 選正面,B 選反面。
第 1 局:正面 -> A 勝
第 2 局:反面 -> B 勝
第 3 局:正面 -> A 勝(最終:A 2 - B 1)
B 付帳。課堂機率示範(50 次擲幣)
10 次後 :正 7 反 3 (70% / 30%)
25 次後 :正 14 反 11 (56% / 44%)
50 次後 :正 26 反 24 (52% / 48%)
結論:樣本數越大,比例越會收斂於 50/50。常見問題
擲硬幣的結果真的是隨機的嗎?
是的。頁面使用 Web Crypto API 的 crypto.getRandomValues,種子來自作業系統的密碼學亂數池。每次擲幣彼此獨立,前面的結果不會影響下一次。重新整理頁面也不會重置隨機性。
為什麼我連續擲出五次正面?
「隨機」並不代表「平均交替」。連續五次同面的機率是 1/16 ≈ 6.3%,少見但並不罕見。在真正的隨機序列中,連勝是常態;完全交替的序列反而是人為偏誤的徵兆,不是真正的隨機。
每次擲幣真的是 50/50 嗎?
確實是。實體硬幣會有微小的物理偏差(朝上的那一面落地時略容易朝上),但電腦模擬沒有這種偏差,兩面都剛好是 50.000…%。用來公平地決定平局再合適不過。
拿來做團體決策公平嗎?
數學上是公平的。社交層面上,「要不要擲」以及「擲完是否反悔」這些步驟反而比擲幣本身更重要。擲之前先說好結果一定要遵守。
可以看到一系列擲幣的統計資料嗎?
頁面一次擲一枚硬幣,會在當前工作階段中追蹤擲幣紀錄、正反面次數、百分比、目前連勝以及最長連勝。統計區會即時呈現所有擲幣的概況。關閉分頁或點選清除紀錄後資料會重置。
我的擲幣結果會被儲存嗎?
近期紀錄會保留在當前的瀏覽器分頁中。關閉分頁通常會清除;某些版本會儲存到 localStorage。資料不會上傳,也不會分享給任何人。
可以拿這個做有法律效力的決定嗎?
用在小事情上沒問題(誰請吃午餐、誰先發言)。任何具法律效力的事項(監護權、合約、財產分配)都需要有見證人在場、可追溯的實體流程。網頁工具事後無法被稽核。