请我喝杯咖啡
返回博客
Gaming

虚拟骰子:到底是什么让一次投掷公平

Random Select Team•2026-03-09•6 min

实体骰子之所以有感觉,是因为期待。你看着骰子离开手、弹跳、停下,结果像是发生了,而不是被揭示出来。大多数网页骰子工具完全跳过了这一步——数字直接冒出来——功能上没问题,气氛上却死了。

这里的 3D 掷骰器保留了投掷的过程。这对桌面跑团、课堂概率教学,以及任何人们想看到结果并非在他们看之前就已决定的场合都很重要。

你能掷什么

预设覆盖了标准桌面跑团套装:d4、d6、d8、d10、d12、d20。除了预设,自定义面数字段接受从 2 到 100 的任意面数,涵盖百分位骰以及各种自制系统。

桌面上放着多颗骰子的 3D 掷骰器

你可以在一次投掷中最多掷 12 颗骰子,并给总数加上**−99 到 +99 的修正值**。这个组合覆盖了骰子驱动系统的大部分需求,无需再去找第二个工具。

为什么每一面概率相同

有一个技术点值得说清楚,因为“随机”这个词被用得太随意了。

每一面朝上的概率恰好是 1/N。每一次投掷都与上一次独立——掷出一个 20 不会让下一次更不可能,连续掷出六个 6 也不会改变下一次的概率。

有两点造就了这一点:

  • 密码学随机源。 骰子取自 crypto.getRandomValues(),也就是浏览器的密码学安全生成器,而不是 Math.random()。这个区别不是表面功夫:Math.random() 是确定性的,因此它的内部状态原则上可以被重建,未来的结果可以被预测。对桌游来说这是冷知识;对任何带赌注的事来说,这就是全部问题所在。
  • 公平的拒绝采样。 当你请求一个区间内的均匀整数而这个区间无法整除时,简单地把随机小数缩放会过度偏向低端。掷骰器会拒绝超出范围的值并重新抽取,这才让每一面恰好是 1/N。

如果你想了解机制,公平性页面 有更详细的说明。

虚拟骰子与实体骰子的对比

值得知道实体骰子在哪里确实更好,因为答案并不是“哪里都不好”。

实体骰子有瑕疵。它可能因为制造而略微偏重,某一面略微磨损,或者被看成一个角而不是一个面。在一颗磨损的骰子上掷上几千次,偏差很小但真实存在——爱好者之所以记录灌铅骰子,正是因为它们存在。

虚拟骰子没有磨损,所以能无限期保持均匀。这是实实在在的优势,也是为什么实体骰子掷出异常高的点数并不总是骰子出了问题。

实体骰子仍然占优的地方:声音、手感,以及一颗你能拿起来的骰子无法被多疑的玩家质疑。

桌面跑团场景

共享屏幕投掷解决了一个在远程游戏中反复出现的问题:“我发誓我掷出了 20。“当结果在同一时刻出现在所有人共享的屏幕上时,就没有什么可争的了。

投掷前先把修正值设好再掷,这样总数就不是事后才调整的东西。

一个值得养成的习惯:当你的系统支持时,设置一个最低点数。d20 攻击掷出 1 是合法但没用的;很多团会在关键检定上重掷 1,在工具里做而不是手动做,能让记录保持干净。

课堂场景

用虚拟骰子教概率比实体骰子更好,原因和公平性无关。

你可以一次掷十二颗骰子,让分布在一个动作里变得可见。掷十二颗骰子十几次,学生就能看到分布收敛到期望值——这种直觉用实体骰子掷一个小时才能建立。

自定义面数也有帮助:d4 容易推理,d20 粒度更细,学生可以问当 N 增大时分布的形状会变成什么样。

一个相关活动:掷 d100 二十次,让学生标记每一个结果。得到的直方图通常凹凸不平,而这种凹凸不平正是要教的——这就是一个公平过程从内部看的样子,也是为什么单次观察什么都证明不了。

关于预测的说明

一个有用的课堂练习:在你投掷之前让学生预测下一次的结果。几乎每个人在高点数之后都会猜“低”。

然后掷出去。重点不是猜对,而是表明没有任何预测比另一个更好,因为每一次投掷都是独立的。用骰子比用任何其他随机过程都更容易演示这一点,因为每个人对下一次都有一个强烈而错误的直觉。

试一试

打开 掷骰子。选好骰子,设好修正值,掷出去。无需账号,无需安装——当游戏两分钟后就要开始时,这一点很重要。

RST

Random Select Team

Random Select 的资深数据分析师与博弈论专家,在数字公平、概率数学与随机决策系统方面拥有超过十年经验。

分享这篇文章