Tools100% 本地
← 所有工具

抛硬币

crypto.getRandomValues · 50/50 · 浏览器内

一个带有真正 3D 动画的真实抛硬币。每个结果都由 crypto.getRandomValues — 浏览器的密码学安全 RNG — 在硬币被抛出之前就已决定,所以投掷只是装饰,结果可证明为 50 / 50。点按按钮、修改标签,或一次批量抛掷一千次。
HEADS
TAILS
标签
每次抛掷
速度
总计
0
正面
0
反面
0
最长连续
0
本次会话历史 (0 · 最新优先)
No flips yet — give it a go.

为什么结果公平

此处硬币的结果由 crypto.getRandomValues 抽取的一个比特决定:页面读取一个新鲜的 32 位无符号整数,把它的最低位当作"正面"(0)或"反面"(1)。在所有现代浏览器上,该整数源自操作系统的密码学熵池 — 与生成 TLS 会话密钥使用的源相同。由于每个比特相互独立且均匀分布,每次抛掷都是真正的 50 / 50,与之前的结果无关。

动画只是装饰

正/反面的决定在硬币开始旋转之前就已做出 — 旋转角度与最终朝向都是为让硬币以预定面落地而选取的。所以动画看着好玩但不会影响结果,结果也无法被任何与投掷的交互所偏置(没有什么"按按钮的小聪明"漏洞)。

批量模式与大数定律

点击 ×100×1000,即可一次性抛出整批硬币。页面只为一枚代表性硬币播放动画(显示最后一次结果),其余结果在下方以小芯片渲染。汇总统计(总数、正面 %、最长连续)会在你的整次会话中持续更新,你可以亲眼看到正面比例随 N 增大而向 50% 收敛,以及偶尔出现的不太可能的连胜 — 10 次以上的同面连击确实会发生,不是 bug。

自定义标签

两个文本字段控制正反面要显示的内容。当"正/反"不合适时可以换成其他二元决定 — 是 / 否留 / 走卷饼 / 披萨。过长的标签会自动缩小以适应面。统计面板的标签也会同步更新。

隐私

没有任何抛掷会被发送出页面。历史记录与统计仅存在于本标签页的内存中,关闭即消失(此处不使用 localStorage 持久化)。本页在最初的静态资源加载之后不发任何网络请求,也没有统计脚本。