弄丢了棋盘游戏的骰子,或者在角色扮演 (role-playing) 游戏进行中需要一个 d20 吗?这个免费的在线掷骰子工具可以替代您手头缺少的任何骰子。在“骰子”字段中,设置您想投掷多少个骰子 — 1 到 20 之间的任何数字 — 在“面数”字段中指定每个骰子有多少个面,然后点击“生成”。该页面在打开时会显示两个普通的六面骰子,因此第一次投掷只需点击一下即可。每个骰子都会单独显示,并且整个投掷的总和会直接显示在它们下方,这样即使是 3d6 也不再需要心算。
每次投掷都是由您的浏览器通过 Web Crypto API (crypto.getRandomValues) 执行的,它直接从您自己系统的随机源中提取密码学上强大的随机值,而不是使用像 Math.random() 这样的伪随机 JavaScript 函数。将 32 位原始值转换为面数,正是虚拟骰子经常悄悄犯错的地方:将该值除以面数并取余数 (modulo) 是最显而易见的方法,但它也带有偏差,因为如果 2^32 不能被面数整除,较低的面出现的频率会略高于其他面。这种缺陷被称为 modulo bias,它是可以测量的,而不仅仅是理论上的。相反,这个工具会丢弃任何超出面数的最大精确倍数的值并重新抽取 — 这种技术被称为 rejection sampling。它需要一些额外的抽取,但它保证了准确性而不是近似值。没有任何数据被发送到服务器,没有任何记录被保存,而且一旦页面加载完毕,即使您的互联网连接断开,您的投掷也将继续工作。
这两个字段完成了所有的工作,它们直接对应于游戏中已经使用的骰子符号。“骰子”意味着您一次投掷的数量,从 1 到 20。“面数”意味着每个骰子拥有多少个面,从 2 到 1000 — 这足以满足 d2 抛硬币、完整的角色扮演套装 (d4, d6, d8, d10, d12 和 d20)、百分比 d100,以及游戏可能发明的超出这些范围的任何其他东西。任何以 NdM 格式编写的内容实际上也就是这两个字段:2d6 意味着将“骰子”设置为 2,将“面数”设置为 6,而单独的 d20 意味着“骰子”为 1,“面数”为 20。要为一个角色属性投掷 3d6 吗?将“骰子”设置为 3,“面数”设置为 6,点击“生成”,所有三个面将与它们的总和一起出现。两个开关改变了结果的外观,而不是其内容。“3D 动画骰子”默认是开启的,它会为每个骰子绘制一个在空中旋转的立方体直到它停下来 — 关闭它,数字将作为简单的列表立即出现。“随机颜色”赋予每个骰子自己独特的颜色,而不是标准的红色,并且这仅在开启“3D 动画骰子”时有效,因为简单列表没有骰子可供上色。只有六面骰子会绘制点数;对于任何其他类型,投出的数字直接显示在其表面上,因为十七面骰子没有标准的点数布局。
结果下方的一行使您免于计算:Σ 是投掷中包含的每个骰子的总和,后面跟着投掷花费的时间以及它是在本地 生成的提示。“全部复制”按钮将结果发送到您的剪贴板,“保存为文件”将其写入文本文件 — 两者都提供每个单独的面,每行一个,而不仅仅是总和,这样投出内容的记录仍然是投出内容的记录。“历史记录”将您最近的 10 次投掷直接保留在浏览器中:点击其中一个即可将其连同总和带回屏幕,复制或删除单个条目,或在需要时清除整个列表。“清除”按钮会清空结果窗口,但会保持您的设置不变。
虚拟骰子比实体骰子更好吗?就公平而言 — 是的,原因是物理上的。一个普通的模制骰子是被钻孔并涂漆的,每个钻出的孔都会带走少量的材料,所以数字六那一面 — 有了它的六个孔 — 变成了稍微最轻的一面,而它相对的面变成了稍微最重的一面。赌场的 precision dice (精密骰子) 正是因为这个原因而存在的:它们的点是用密度相等的材料在平坦的表面上填充的,它们的边缘被切割成直角而不是圆角,它们的加工精度达到几分之一毫米,即便如此,在几个小时的游戏后它们还是会被淘汰出局。棋盘游戏盒子里的骰子没有任何这些特性,并且会随着时间的推移而磨损 — 碎裂的角,由于多年手部摩擦而变圆的边缘,在毯子上而不是桌子上投掷的骰子,这些在现实中远非随机。虚拟骰子没有可能出错的几何形状,它不会磨损,也不提供争论投掷技巧的空间,并且它在第一万次投掷时的表现与第一次完全相同。它做不到的 — 舒舒服服地待在您的手掌中。一个诚实的结论是,这个生成器在公平性上获胜,但在仪式感上落败。
一个公平的骰子和一个公平的总和并不相同。单个骰子的每一面都有相等的几率落下,但是当您开始将骰子相加时,那些总和就失去了这种平等性,这总是让人感到惊讶。两个六面骰子落下会形成 36 种可能性相等的组合;其中正好有 6 种组合加起来是 7,而只有一种方法可以得到 2,也只有正好一种方法可以得到 12 — 所以 7 出现的频率是 12 的六倍,即使对于完全公平的骰子也是如此。添加第三个骰子会进一步缩小这种模式,迫使 3d6 的结果聚集在中间,这就是为什么游戏设计师 在需要数值保持平均而不是走向极端时使用这种方法的原因。单个六面骰子的平均值正好是 3.5,这使得 2d6 的平均值为 7,3d6 的平均值为 10.5,而在游戏桌上,这种数学计算通常比任何概率都更有用。这些都不是缺陷或偏差:投掷多个骰子相加本来就是这样运作的,这就是为什么游戏会要求使用 2d6 而不是单个 d12,即使两者覆盖的范围非常相似。
骰子没有记忆。连续四次投出六,丝毫不会降低第五次投出六的可能性;一个整个晚上都没有出现过一次 1 的骰子并没有因此就赚到一个 1,也不存在某个特定面“轮到”出现这种说法 — 每次投掷都完全独立于前一次投掷,骰子不知道它一分钟前做了什么。宣称与之相反的直觉被称为 gambler's fallacy (赌徒谬误),正是这种直觉解释了为什么我们在自己编造骰子结果时表现得如此糟糕:当被要求写下一系列可信的投掷序列时,我们会避免重复,我们在高数字和低数字之间交替,我们比真正的随机性 将它们分布得更均匀。另一方面,真正的随机性会产生簇、长串相同的数字,以及没有重复的长时间间隔。那串看起来可疑地整齐的序列,实际上是人类的指纹。
为什么选择这个掷骰子工具?
- 仅限浏览器的投掷:骰子在您的设备上投出,不会被发送到任何地方
- Web Crypto API 随机性:密码学安全,没有使用 Math.random()
- 消除 modulo bias:rejection sampling 技术使每一面的几率保持完美的均等
- 游戏所要求的任何骰子:一次 1 到 20 个骰子,从 d2 直到 d1000
- 为您计算的总和:Σ 累加整个投掷,因此 3d6 不再需要心算
- 3D 动画骰子,或者关闭动画以立即获得一个简单的数字列表
- 每个骰子都有单独的颜色,因此一眼就能轻松区分许多骰子
- “历史记录”和“保存为文件”:保留您以后可能需要解释的投掷记录
- 无限制且免费:无需注册,没有使用限制,我们的服务器上没有任何数据
骰子出现在游戏需要一个无人能选择的数字的任何地方。桌上角色扮演玩家用 d20 进行攻击,为角色属性投掷 3d6,为百分比检定投掷 d100,即使丢了一半骰子袋的队伍也可以毫无阻碍地继续他们的游戏。摊在厨房桌子上的棋盘游戏在骰子丢失后以同样的方式继续 — 只需将“面数”设置为 6,将“骰子”设置为 2,然后继续玩。远程游戏的队伍在一个共享屏幕上投掷骰子,以便每个人都能在骰子停下时看到落下了哪些面。老师们开展经典的概率 课堂教学:投掷 2d6 正好 60 次,计算总和,然后看着模式在黑板上自行绘制出来。游戏设计师在游戏付印之前,测试某个机制给出的结果是否真的像感觉的那样大起大落。大量简单的投掷只是用来决定谁先玩、谁买咖啡或两个计划中哪一个获胜 — 这些都是交给命运做出的决定,人们几千年来一直通过骰子来解决。
这个工具有一些应该知晓的明确限制。每次投掷只使用一种类型的骰子:“面数”字段中的值适用于该次投掷中的每一个骰子,因此将 d20 和 d6 一起投掷需要两次单独的投掷,而不是一次。这里没有修正值,没有优势 (advantage) 或劣势 (disadvantage) 投掷,没有爆炸骰子 (exploding dice),也没有输入骰子符号的文本框 — 您得到的是落下的面和总和,在此之后添加的任何规则由您自己处理。Σ 计算投掷中包含的每个骰子,并且“全部复制”和“保存为文件”按钮写下每个单独的面而不是总和。无论面数多少,动画始终显示一个六面立方体,因为它纯粹是为了装饰:它停止的地方是工具在此之前早已生成的投掷结果。投掷是在您的设备上本地 发生的,因此在远程游戏时,由一个人投掷并共享他们自己的屏幕 — 该工具生成的是您可以自己解释的投掷,而不是第三方可以为您背书的投掷。而且,当然,一个密码学上公平的骰子仅仅是一个公平的骰子:它与任何彩票或赌场抽奖没有任何联系,也不给予任何人任何优势。在这些限制范围内,保证是坚如磐石的 — 任何骰子的任何一面在任何一次投掷中落下的概率都是完全相等的。