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 持久化)。本页在最初的静态资源加载之后不发任何网络请求,也没有统计脚本。