真心话大冒险生成器

按暖场、熟络、放开三个尺度档分组出题,真心话与大冒险交叉,一次抽出一整轮且同一轮内绝不重复。

题型(勾选后才会从对应题库抽题)

上面这 8 行是页面打开时的演示值,点「抽一整轮」会换成真正随机抽出的一批;演示值与上方控件的默认值、正文示例里的 8 道题完全一致,也都能在题目库里逐字找到。

提示:在「本轮题数」输入框里裸敲 Enter 即可再抽一轮;一轮最多 20 题,超过 12 题时表格先显示 12 行,再点「加载更多」展开。

使用方法

  1. 先勾题型。默认「真心话」和「大冒险」两类都勾着,只玩一种就把另一个取消。题型决定从哪一组题库里抽题,两类都不勾时没有题可抽,工具会直接报错。
  2. 选尺度档。默认第 2 档「熟络」。三档对应不同的开放程度,开局前请把下面的分级说明念一遍,全员同意后再继续。
  3. 填本轮题数,默认 8 题,允许 1~20 的整数。上限不是写死的 20,而是当前候选池的容量:两类全勾时候选池 20 题,只勾一类时只有 10 题,最多就只能抽 10 题。
  4. 点「抽一整轮」,或者在题数输入框里直接敲 Enter。结果表按抽取顺序列出本轮题目,同一轮内不会出现两道一样的题。
  5. 题数超过 12 时表格先渲染前 12 行,点「加载更多」展开剩余部分;点「导出 CSV」下载带 BOM 的表格(Excel 双击不乱码),点「复制对照表」把整轮按制表符复制走,粘进备忘录或群里传着玩。

这个真心话大冒险生成器能解决什么问题

一是把「谁出题」交给程序。现实里最尴尬的环节往往不是答题,而是没人愿意出题——出的题要么太温和没人接,要么一下子过火而冷场。这里把题库提前写死并分级,你只需要选一个档位,剩下的由抽样算法决定,出题人不再承担「他是不是故意整我」的压力。

二是同一轮内绝不重复。手工从一张纸上抽题,抽到后面很容易重复抽到刚才那道,或者因为翻页顺序固定而总是那几道。本页用不放回抽样,同一轮里的每一道题都来自不同位置,重复概率被压到 0——这是构造决定的,不是「概率很低」。

三是尺度可控、边界说在前面。尺度档不是给题目贴标签,而是把「这一档大概会问到什么程度」先讲清楚,让每个人在开始前就知道自己会被问到哪一类问题。第 3 档默认不勾,需要全场一致同意才切换。

四是一次生成整轮,方便离线和传阅。手机传着玩时不必每轮都回到浏览器点一下:抽好一整轮导出 CSV,存进备忘录,断网也能照着念。

本页不做这些事:不随机选人(谁答哪道题由你们自己决定)、不做计时和计分、不保存历史局。想先随机点一个人出来,用「随机抽人」;想在陌生人局里先融化气氛,用「破冰提问」;想玩「你做过我没做过」这类举手游戏,用「我有你没有」。这些都在页面底部的相关工具里。

出题原理:分档题库、不放回抽样与拒绝采样

这个真心话大冒险生成器在算法上只做两件事:从一个大题库里裁剪出本轮的候选池,然后不放回地抽出 n 道题。

第一步是裁剪候选池。题库总量固定 60 题:题型(真心话 / 大冒险)× 尺度档(1 / 2 / 3)= 6 个格子,每格 10 题。你勾的题型和选的档位共同定位到其中 1 个或 2 个格子,把它们拼起来就是候选池:只勾一类是 10 题,两类全勾是 20 题。这也解释了为什么「本轮题数」的上限会随勾选变化,而不是写死的 20。

第二步是洗牌式不放回抽样。用的是 Fisher–Yates 的部分洗牌:对候选池从下标 0 开始遍历到 n−1,第 i 次从「i 到末尾」这个区间里随机取一个下标 j,交换第 i 位和第 j 位。循环跑满 n 次之后,数组的前 n 位就是本轮的题,而且天然两两不同——因为每次被选中的位置都在不断缩小的未选区间里,被选走的位置不会再进入下一轮随机区间。这就是「同轮不重复」的全部原理,不需要事后去重,也不需要 while 循环反复重抽。

第三步是随机数的均匀性。随机源是 crypto.getRandomValues(new Uint32Array(1)),一次拿一个 32 位无符号整数,取值范围 0~4294967295。拿到之后不能直接写 n % 20:因为 232 = 4294967296 不能被 20 整除,余数是 16,意味着下标 0~15 这 16 个题目各比下标 16~19 多一次被抽中的机会。所以本页先算接受上限 Math.floor(4294967296 / 20) * 20 = 4294967280,随机数落在 4294967280~4294967295 这 16 个取值上就丢弃重抽。只勾一类时上限是 Math.floor(4294967296 / 10) * 10 = 4294967290,丢弃 6 个取值。被丢弃的比例在 1.4×10-9 到 3.8×10-9 之间,也就是平均十亿次才重抽几次,代价可以忽略,换来的却是严格均匀的分布。

与「每次独立随机」的差别有多大。假设候选池 20 题、抽 8 题,如果每道题都独立随机(抽完放回),出现至少一道重复题的概率是 80.16%——也就是说按独立随机抽,大多数轮次都会撞题。改成不放回之后这个概率被压到 0。同时 8 道题的可选方案从 208 种(约 2.56×1010)收敛到 P(20,8) = 20×19×…×13 = 5079110400 种(约 5.08×109),方案数少了,但每一种都是「无重复」的合法方案。

尺度档的界定方式必须说清楚。尺度档是本页自定义的开放程度分级,不是任何国家标准或行业规范,因此它不构成对「什么问题可以问」的授权。第 1 档只包含公开信息类问题(最近喜欢的歌、最拿手的菜),第 2 档开始涉及轻微尴尬的个人经历与小型社死动作,第 3 档涉及情感经历、金钱数字和需要交出手机的动作。上表里每一档的边界都写明了,开局前必须让所有人看过并同意;任何人在任何一轮都有权说「跳过」,这是使用本页的前提,而不是可选项。

完整示例(数值仅作演示)

示例条件与页面打开时的默认值完全一致:尺度档 2(熟络)、真心话与大冒险两类全勾、本轮 8 题。此时候选池是档 2 的两格共 20 题。

下面这 8 道就是默认条件下抽出的演示值,与上面结果表里的 8 行、以及下面「尺度档与题库容量对照表」中的第 2 档完全对得上:

序号题型尺度档题目
1真心话熟络你最近一次撒谎是为了什么?
2大冒险熟络发一条大家规定内容的朋友圈。
3真心话熟络你花过最冤枉的一笔钱是多少?
4大冒险熟络让大家翻你相册往前 20 张。
5真心话熟络你有没有背着朋友说他坏话?
6大冒险熟络用最不擅长的唱腔唱一首歌副歌。
7真心话熟络你最近一次后悔的决定是什么?
8大冒险熟络让大家投票选你最像的动漫角色。

尺度档界定与题库容量对照表

题库是固定的 6 个格子,每格 10 题。下表把每一档的边界和容量写清楚;「候选池」是按你勾选的题型算出来的可抽题数,也就是「本轮题数」的真正上限。

尺度档本档的界定(开局前需全员确认)真心话大冒险两类全勾候选池本轮题数上限
1 · 暖场只涉及公开信息与轻量动作:喜好、习惯、日常小事;动作类不涉及隐私、不用手机、不做身体接触。101020 题20 题
2 · 熟络涉及轻微尴尬的个人经历与小型社死动作:小金额、丢脸瞬间、需要发一条动态或念一句话;仍不涉及情感经历与财务明细。101020 题20 题
3 · 放开涉及情感经历、心理感受与需要交出手机的动作:暗恋、心动、恋爱史、账单总额;默认不勾,需全场一致同意才开启。101020 题20 题
合计6 个格子 × 10 题303060 题—

下面这张表是「本轮题数」对应的抽法数量与有放回时的撞题概率,用来解释为什么不放回比「重复就重抽」更省事。候选池固定按两类全勾的 20 题计算:

本轮题数 n不放回抽法 P(20,n)有放回方案数 20n无重复方案占比有放回时至少撞一题
8 题(默认)5.08×1092.56×101019.84%80.16%
12 题6.03×10134.10×10151.47%99.91%
16 题1.01×10176.55×10200.02%99.999%
20 题(上限)2.43×10181.05×10264.7×10-8%≈100%
只勾一类,8 题1.81×1061.00×1081.81%98.19%

把最后两列放在一起看就明白了:「不重复」不是把方案变多,而是把方案里绝大多数带重复的那部分直接删掉。抽 20 题时,有放回会产生约 1.05×1026 种序列,其中只有 2.43×1018 种是无重复的,占比不到一亿分之一。如果靠「抽到重复就重抽」来兜底,题数越多命中率越低,抽到 20 题时几乎每一轮都要重抽很多次;用不放回抽样则一次成型。

输入范围、边界与舍入说明

下面这些不是「限制」,而是这个真心话大冒险生成器刻意设定的边界,知道它们能避免把本页当万能工具用:

常见问题

为什么同一轮里一定不会重复,而不是「重复概率很低」?

因为用的是不放回抽样:每次随机只在「还没被选走的那些位置」里进行,被选走的位置不会再进入随机区间。这是构造上的保证,不依赖概率大小,也不需要事后去重。相比之下,独立随机的做法抽 8 题就有 80.16% 的概率至少撞一题。

为什么填 15 题、只勾一类时会被拒绝?

只勾一类时候选池只有 10 题,从 10 道题里不放回地抽 15 道是不可能的。工具会明确报错并告诉你想抽 15 题必须把题型补成两类全勾(候选池 20 题),而不是悄悄把题数改成 10 塞给你一份和输入不符的结果。

尺度档是谁定的?有国标依据吗?

没有。尺度档是本页自定义的开放程度分级,用来在开局前把「这一档大概会问到什么程度」讲清楚,让每个人提前知道自己会遇到哪类问题。它不是授权,也不代表第 3 档的问题就一定适合你们这一场——是否开启、开到哪一档,必须由在场所有人共同决定。

抽到不想答的题怎么办?

跳过。这是本页的使用前提,不是可选礼貌:任何人在任何一轮都有权拒绝回答或拒绝执行,其他人不得追问原因。第 2、3 档里涉及社交媒体发布、翻看手机、联系他人的动作,尤其需要当事人自愿;工具只负责随机出题,不负责替你们判断某道题对某个人是否合适。

再点一次「抽一整轮」会和上一轮重复吗?

可能重复,而且是正常的。每一次点击都是独立的一次抽样,上一轮的题会重新回到候选池。两轮完全相同(顺序也相同)的概率约为 1.97×10-10,但两轮之间出现一两道相同的题属于随机现象,不代表算法出错。

为什么「在场人数」不参与抽题?

因为把题目分配给人是一个社交判断,不是一个计算问题:谁刚被罚过、谁特别害羞、谁今天不想被点,这些信息只有你们知道。本页只解决「这一轮出哪 8 道题」,人题对应关系留给你们自己安排。该字段只影响提示文案,填错也不会改变抽题结果。

导出的 CSV 用 Excel 打开是乱码吗?

不会。导出时在文件开头写了 UTF-8 BOM(U+FEFF),Excel 会据此识别编码,中文题目正常显示。「复制对照表」复制的是制表符分隔文本,粘进 Excel 会自动分列,粘进备忘录则保持对齐,两种方式都不需要手动设置编码。

题目会被上传,或者被其他人看到吗?

不会上传,但第 3 档的题目确实写在页面 HTML 里,懂技术的人查看源码就能提前看到全部 60 题。如果你在意被提前剧透,可以让一个人在自己的设备上出题,只把结果念出来;工具本身不做任何隐藏或加密。

相关工具

想让这个真心话大冒险生成器用在更具体的场合,可以按场景挑下面这些工具搭配: