数字炸弹游戏

设定范围由系统埋一颗雷,轮流报数收缩安全区间,踩雷出局;实时显示剩余可选数与二分最优步数。

对局状态

指标值

报数历史

次序玩家报数区间变化

使用方法

打开页面即按默认参数埋好一颗雷:范围 1 到 100、3 人、种子 20251012。状态区显示当前区间、剩余可选数与二分最优步数,报数框默认填 50。在“本轮报数”输入一个当前区间内的整数按回车,或点击“报数”按钮:踩雷者出局并当场揭晓炸弹;安全则报的数成为新区间端点,轮到下一人。所有输入框都带 min、max、step,超出范围会给出具体提示,例如玩家人数填 12 时会被告知应在 2 到 10 之间。

修改范围、人数或种子后按回车或点击“重新埋雷”生效;范围下限必须严格小于上限,lo 等于 hi 应判非法。“重置历史”清空报数记录与轮次但保留当前这颗雷,适合同一批人重开一局;想换一颗雷就改种子。报数历史默认显示前 12 行,点击“加载更多”展开全部;复制按钮输出制表符文本,导出按钮下载带 BOM 的 CSV。全部运算在当前浏览器内完成。

本页在站内目录中的名称是数字炸弹。开局后雷位不会以任何形式泄露,状态区的“本局状态”一栏在踩雷前始终显示进行中,踩雷后才给出炸弹数值与埋雷时的 index。

对局过程中的信息都以整数呈现:剩余可选数扣掉区间两端已经报过的数,因此报过一个端点之后它不再计入候选;二分最优步数按剩余可选数实时重算,从 7 步逐步降到 0。谁先手由已报次数对人数取模决定,第 1 人永远第一个报数。三人以上时,把鼠标悬在“当前轮次”一栏就能确认下一次该谁发言,避免实战中轮次混乱。

能解决什么

这个游戏常被当成纯运气,但它的结构完全可算:每报一个数就带走一半候选,能否尽快锁定只取决于报数是否始终落在当前区间中点。本页把“当前区间、剩余可选数、二分最优步数”实时摆在屏幕上,玩家第一次报数之前就能看到本局理论上最多还要几步、自己排在第几轮,从而判断该抢中点还是该把风险推给下一位。

人数决定轮次而不决定步数:3 人玩 1 到 100 时,二分 7 步要分 3 轮走完;10 人玩只要 1 轮。单轮内踩雷的人越多,一局结束得越快,这是规则设计的权衡点。边界情形同样可算:范围只有 1 到 3 时先手只能报 2,必炸必输;范围 1 到 2 时只有一个安全数,先手报到它即赢;范围退化成单点(lo 等于 hi)应判非法。

聚会里另一类常见争议是“种子凭什么说了算”。本页把埋雷公式完整写在页面上,任何人都能拿计算器复算:同一种子必然埋出同一颗雷,换种子才换雷。这让复盘变得可能——一局结束后所有人都能验证炸弹确实来自种子而不是被临时改动,也方便固定用同一个种子办多场比赛,保证各桌难度一致。

原理与变量

埋雷用线性同余发生器:炸弹数 = lo + floor(s/2147483647 × (hi−lo+1)),其中 s=(Math.imul(s,1103515245)+12345)&0x7fffffff,种子相同则雷位相同。默认种子 20251012 在 1 到 100 埋雷:index = 70,炸弹数 = 1 + 70 = 71;把种子改成 20251013 复算,index = 21,炸弹数 22。

安全区间大小 = hi − lo − 1;二分最优步数 = ceil(log2(剩余可选数个数))

报数规则按大小把数变成新区间端点:报数等于炸弹即出局;报数小于炸弹,该数成为新下限;报数大于炸弹,该数成为新上限。因此当前区间永远夹着炸弹,扣掉两端已报数后的剩余可选数为 hi−lo−1。以 1 到 100 为例,可选 98 个,二分 7 步可锁定;1 到 1000 可选 998 个,10 步;1 到 64 可选 62 个、1 到 63 可选 61 个,都是 6 步;1 到 1000000 可选 999998 个,20 步。

按中点报数时,每收缩一步的区间大小为:1 到 100 报 50 剩 48 个,报 25 剩 23 个,报 13 剩 11 个,报 7 剩 5 个,报 4 剩 2 个,报 2 剩 0 个。命中概率与策略无关:1 到 100 单轮随机报数的命中概率是 1/99 = 1.0101010101 个百分点,按二分走命中概率仍由雷的位置决定。

这里必须说明取词的舍入方向。埋雷取 Math.floor(s/2147483647 × (hi−lo+1)),只向下取整,因此 index 的合法范围正好是 0 到 hi−lo,炸弹数落在 lo 到 hi 之间且不会越界。若改成四舍五入,index 可能等于 hi−lo+1,炸弹就会落到区间外,永远踩不到。步数一侧的 ceil(log2(n)) 同样只向上取整:可选 98 个时 log2(98) 约等于 6.63,向上取成 7,保证步数足够而不是少算一步。

完整示例

以默认参数开局:范围 1 到 100、3 人、种子 20251012。系统先算 s 的下一个状态,再取 index = 70,于是炸弹是 71,状态区显示区间 [1,100]、可选 98 个、二分 7 步、轮到第 1 人。第 1 人报 50:50 小于 71,50 成为新下限,区间变为 [50,100],剩余可选 49 个,二分 6 步,轮到第 2 人。

第 2 人报 75:75 大于 71,75 成为新上限,区间变为 [50,75],剩余可选 24 个,二分 5 步,轮到第 3 人。第 3 人报 62:62 小于 71,区间变为 [62,75],剩余可选 12 个,二分 4 步,轮到第 1 人。此后每轮按中点压缩,七步之内必锁定;若有人报出 71,该人出局,状态区给出炸弹 71 与雷位 index = 70。换种子 20251013 重开,同一区间下雷位变成 21,炸弹是 22。

把范围改成 1 到 1000、人数保持 3 人、种子不变,可选数变成 998 个,二分步数升到 10 步,同样分 3 轮走。把人数改成 2 人,同样的 7 步要分 4 轮:第 1 人报第 1、3、5、7 步,第 2 人报第 2、4、6 步。这两个对照说明步数只由可选数个数决定,轮次才由人数决定,调整人数不会让一局变得更容易或更难,只会改变每个人要承担的次数。

对照表

范围、可选数与二分步数的对应关系如下,可选数按 hi−lo−1 计算,步数按 ceil(log2(可选数)) 取整。

范围可选数二分最优步数
1 到 100987
1 到 100099810
1 到 64626
1 到 63616
1 到 200
1 到 310
1 到 1083
1 到 100000099999820
1 到 863
1 到 973

按中点报数的区间收缩序列(1 到 100):报 50 剩 48 个,报 25 剩 23 个,报 13 剩 11 个,报 7 剩 5 个,报 4 剩 2 个,报 2 剩 0 个。人数与轮次(均按二分 7 步)的对照为:2 人分 4 轮、3 人分 3 轮、4 人分 2 轮、5 人分 2 轮、6 人分 2 轮、10 人分 1 轮,第 1 人始终先手。

结果边界与舍入

范围上下限的合法区间是 −1000000 到 1000000,且下限必须严格小于上限;两者相等或下限更大时判非法并提示调整。玩家人数为 2 到 10 的整数,种子为 0 到 2147483647 的整数,超出范围都会给出具体提示。报数必须是当前区间内的整数,报区间外的数会被拒绝并显示当前区间;重复报已经报过的数同样被拒绝,并提示区间内还剩几个未报数。

剩余可选数与步数都是整数:可选数取 hi−lo−1,小于 0 时按 0 计;步数取 ceil(log2(可选数)),可选数为 0 或 1 时记 0 步。本页不做小数舍入,所有显示值都是精确整数。轮到谁由已报次数对人数取模决定,重置历史后回到第 1 人,炸弹不变。

报数框本身不限定死区间,只限定整数与十万量级,真正的位置校验交给脚本:报区间外的数会被拒绝并回显当前区间,提示玩家先看状态区再报数。踩雷后报数框仍可输入,但任何再次报数都会被提示本局已结束,需要重新埋雷,避免一局结束后误触改变历史。

常见问题

雷是怎么埋出来的,能换吗?

用固定公式:s=(Math.imul(s,1103515245)+12345)&0x7fffffff,再取 floor(s/2147483647×(hi−lo+1)) 加到下限上。种子 20251012 在 1 到 100 得 index = 70、炸弹 71;改成 20251013 得 index = 21、炸弹 22。

为什么 1 到 100 是 7 步?

可选数是 hi−lo−1 = 98 个,二分最优步数 = ceil(log2(98)) = 7。1 到 1000 可选 998 个所以是 10 步,1 到 1000000 可选 999998 个所以是 20 步。

报大和报小有什么区别?

报数小于炸弹,该数成为新下限,区间向上收;报数大于炸弹,成为新上限,区间向下收。报中点永远带走一半候选,偏离中点会留下更大的一半。

3 个人和 10 个人差别在哪?

步数不变,都是 7 步;变的是轮次。3 人分 3 轮、10 人分 1 轮。人越多,单轮内踩雷的人越多,一局结束得越快。

范围只有 1 到 3 时先手为什么必输?

可选数只有 1 个,就是 2,而 2 正是区间内唯一未报的数,先手报 2 必炸必输,二分步数记 0。

范围 1 到 2 为什么先手即赢?

两个数里只有一个是雷,先手报到的那个若安全,对手就被迫报剩下的雷。所以先手有一半机会当场取胜,步数同样记 0。

命中概率真的和策略无关吗?

是。1 到 100 单轮随机报数的命中概率是 1/99 = 1.0101010101 个百分点;按二分走,命中概率仍由雷的位置决定,报数顺序不改变雷在哪。

报数历史能导出吗?

能。复制按钮输出制表符文本,导出按钮下载带 BOM 的 CSV,含次序、玩家、报数与区间变化四列,Excel 打开中文表头不乱码。

相关工具

还需要抽人、转盘、骰子或批量随机数的场合,可以用下面几个入口。以下均使用站内实际分类路径: