抛硬币
在线模拟抛硬币,随机生成正面或反面
什么是抛硬币工具?
抛硬币工具模拟只有两种结果的随机选择:正面或反面。它适合处理低风险、两边都能接受的小决定,比如谁先开始、先评审哪份稿子、走哪条路线、游戏里谁先手等。在线抛硬币的优势是方便、结果清晰,并能记录最近几次结果、连续次数和正反面比例。公平硬币在大量次数下会接近 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 × 0.25,标准差为 0.5 × √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 × 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,其种子来自操作系统的密码学随机源。每一次抛掷都相互独立——之前的结果对下一次没有任何影响。刷新页面也不会重置随机性。
为什么我连续抛出了 5 次正面?
随机并不意味着「正反交替均匀出现」。连续 5 次同一面的概率是 1/16 ≈ 6.3%——少见但并不罕见。在真正的随机序列中,长连击是正常现象;恰好完美交替的序列反而是人为偏差的迹象,而不是随机的体现。
每次抛掷的概率真的是 50/50 吗?
完全是。真实硬币会有微小的物理偏差(朝上的一面落地时朝上的概率会稍高一点),但计算机模拟器没有这种偏差——两面的概率都是精确的 50.000…%。用它来公平地决出胜负完全没问题。
用它来做集体决策公平吗?
数学上是公平的。不过从社交角度看,「要不要抛」以及「抛完后能不能反悔」这两个环节,比抛硬币本身更重要。在抛之前先约定好——结果一旦出来,大家都得认。
可以查看一系列抛掷的统计数据吗?
页面每次抛一枚硬币,并在当前会话中跟踪抛掷历史、正反面次数、百分比、当前连击和最长连击。这些统计数据让你可以总览所有抛掷情况。关闭标签页或点击「清空历史」会重置数据。
我的抛掷结果会被保存吗?
近期的抛掷记录会保留在你当前的浏览器标签页中。关闭标签页通常就会清除;某些版本会保存到 localStorage。任何数据都不会上传或与他人共享。
可以用它做有法律效力的决定吗?
对于无关紧要的选择(谁请客吃饭、谁先来),可以放心使用。任何具有法律效力的事项(监护权、合同、财产分割)都需要有见证的、文档化的实物流程。网页工具事后无法被审计。