宁愿两难问题生成器

从 24 组「宁愿 A 还是 B」的两难题目里随机抽题:同一次生成的题目互不重复,每一题的左右两个选项还会各自随机换位,避免出现「A 永远在前面」的位置偏差。

1. 每天早起一小时 还是 每天晚睡一小时?(生活日常)
2. 永远不能喝咖啡 还是 永远不能喝茶?(生活日常)
3. 只能手洗衣服 还是 只能手洗餐具?(生活日常)
4. 手机永远停在 10% 电量 还是 电脑永远停在 10% 电量?(生活日常)
5. 免费环游世界一年 还是 免费住五星酒店一年?(旅行冒险)
6. 以后只能坐火车出行 还是 以后只能坐飞机出行?(旅行冒险)

演示:主题「全部主题混合」、条数 6,得到上面这 6 题(数值仅作演示)。点「生成题目」会换一批随机题。

题库共 24 组,默认显示前 12 组(数值仅作演示)
序号主题选项 A选项 B
1生活日常每天早起一小时每天晚睡一小时
2生活日常永远不能喝咖啡永远不能喝茶
3生活日常只能手洗衣服只能手洗餐具
4生活日常手机永远停在 10% 电量电脑永远停在 10% 电量
5旅行冒险免费环游世界一年免费住五星酒店一年
6旅行冒险以后只能坐火车出行以后只能坐飞机出行
7旅行冒险永远住在海边永远住在山里
8旅行冒险一次去二十个国家二十次去同一个国家
9超能力会世界上任何语言会世界上任何乐器
10超能力可以隐身可以读心
11超能力以后不用睡觉以后不用吃饭
12超能力过目不忘一学就会

使用方法

  1. 先选「题目主题」。默认是「全部主题混合(24 组)」,也就是从整个题库里抽;也可以只挑一个主题,比如「超能力(4 组)」。
  2. 在「生成条数」里填本次想要几题,示例 6。合法范围是 1 到 24,超过题库规模一定重复,所以会被拦住。
  3. 点「生成题目」,结果区给出编号列表,每题格式是「A 还是 B?(主题)」;页面打开时已经预置了 6 组示例,直接就能用。
  4. 结果不满意再点一次即可,每次都是独立的一次洗牌。想回到初始那 6 题,点「载入示例」。
  5. 「复制结果」把整段题目写进剪贴板;「导出题库 CSV」下载带 BOM 的 24 行题库;「复制题库 TSV」复制成制表符文本,可直接粘进表格软件。
  6. 「加载更多」把对照表从 12 行展开到 24 行,方便先看看全部题目再决定主题。

这个宁愿两难问题生成器能解决什么问题

最常见的场景是破冰与聚会。饭桌上、团建里需要一连串「二选一」话题来热场,临时想题容易冷场;把条数设成 10,一次拿十条互不重复的题目连续抛出去,节奏就不会断。

第二类是内容创作选题。短视频、图文、播客都需要「宁愿 A 还是 B」这种高评论率的互动题,先随机抽 12 条当候选,再从中挑出最贴合账号调性的几条来二次加工。

第三类是自我问答与心理测试。这类题的价值不在答案本身,而在逼你把模糊的偏好排序;同一个主题连续抽几题,很快就能看出自己在「时间」「金钱」「能力」之间真正的权重。

这个宁愿两难问题生成器 不做的事也说清楚:它不判断哪个选项更「正确」,也不记录你的选择,因此不产出任何测试结论;它不做多人投票统计(那是问卷类工具的活);题库是固定的 24 组,不联网抓取,所以不会随着热点更新。

原理与规则说明

抽题用的是 Fisher–Yates 部分洗牌(也叫 Knuth shuffle)。做法是把题库 24 个下标放进一个数组,从末尾往前遍历,每次在「当前位置及之前」随机取一个下标并与当前位置交换;只要做 k 次就得到 k 个随机且互不重复的下标,无需把整个数组洗完。这个算法的关键在于「随机取值范围随当前位置收缩」——少了这一步,各个排列的出现概率就不再相等。

本页不用 sort(() => Math.random() - 0.5) 这种一行洗牌。它的比较函数不满足传递性,结果是有偏的:某些排列出现得更频繁,某些几乎不会出现。24 个元素做那种「洗牌」时,偏离均匀的程度已经可以用统计检验量出来;题目少了看不出来,抽多了就会发现总绕不开某几组。

随机源用的是浏览器的 Math.random()。它是伪随机数生成器而不是加密级随机源:以 V8 为例,底层是 xorshift128+,内部状态 128 位、周期约 2 的 128 次方减一,配合约 53 位的双精度输出。对抽话题这种用途足够,但它的输出在知道内部状态后可被预测,因此不能用于抽奖、密钥、验证码这类需要不可预测性的场合——需要那种强度时要改用 crypto.getRandomValues()。

第二层随机是左右换位。题库里每一组题都以固定的「A / B」顺序存储,如果直接输出,用户看到的永远是同一个选项在左边,久了会形成「左边那个总是更诱人」的错觉。所以生成时对每一题独立做一次 Math.random() < 0.5 的判定来决定是否交换左右,每题两种朝向,6 题就有 2 的 6 次方等于 64 种朝向组合。

组合数与去重的收益也可以量化:从 24 组题库里挑 6 组,不重复的组合数是 C(24,6) = 134596;如果允许重复抽同一组,可能的序列数是 24 的 6 次方 = 191102976,是前者的约 1419.8 倍。换句话说,去重把「看起来很多」的重复序列压缩成了真正互不相同的 13 万多种题面。

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

默认设置是主题「全部主题混合」、条数 6,与页面打开时预置的 6 题、以及下方题库表的前 6 行三处一致。

这次抽到的 6 题全部来自前两个主题,看起来「不够散」,但这正是随机洗牌的正常结果之一:24 组里前 8 组恰好是生活日常与旅行冒险各 4 组,部分洗牌只取前 6 个位置,落在这 8 组里的概率并不低。想强制每个主题都出现,就手动把主题切换成单个主题,或者多抽几题(比如 12 题)提高覆盖面。

再看一条边界示例:把条数填成 24 会刚好用尽整个题库,输出 24 条互不重复的题目;填 25 则会被拒绝并提示「题库只有 24 组,超过必然重复」。如果只选了「超能力」这个主题,池子只有 4 组,条数填 6 会提示该主题最多只能出 4 条。

输入范围与对照表

两个控件都很简单:主题是下拉选择,条数接受 1 到 24 的整数。下面这张表是完整题库,24 组按 6 个主题分组,每组 4 条;页面默认直出前 12 组,「加载更多」补齐剩下 12 组。

题库主题分布(数值仅作演示)
主题组数可选范围说明
生活日常41 ~ 4作息、饮品、家务、电量
旅行冒险41 ~ 4目的地、交通、住处、行程密度
超能力41 ~ 4语言、乐器、隐身、读心
食物口味41 ~ 4甜辣、外食、主食、餐数
假设场景41 ~ 4时间、金钱、断网、被记住
人际社交41 ~ 4朋友数量、说话方式、聚会角色
全部混合241 ~ 24六个主题合并后的全库

点「导出题库 CSV」得到 24 行明细(带 BOM,Excel 打开不乱码),点「复制题库 TSV」复制成制表符文本;两者都以当前表格内容为准,「加载更多」展开后导出的是完整 24 行。

输入范围、边界与精度说明

条数的合法区间是 1 到 24,且必须是整数。填 0、负数、小数、空值各有独立文案:0 与负数会被提示「要在 1 到 24 之间」,小数会被提示「要填整数」,空白会被提示「不能留空」。之所以不自动四舍五入,是因为「抽 6.5 题」本身没有定义,静默取整会让你误以为设置生效了。

主题决定了池子上限:选「全部主题混合」时最多 24 条,任意单主题最多 4 条。条数超过上限会被拒绝并明确指出是哪个主题、上限是多少,而不是悄悄少生成几条。

这里存在两个容易混淆的边界。其一是「不重复」的范围:本页保证的是同一次生成内部不重复;连续点两次「生成题目」,两次之间可能抽到相同的题,这属于设计而非缺陷——两次生成是两次独立抽样,不做跨次去重。其二是「随机」的含义:由于使用 Math.random(),结果无法被预测,也无法被复现;本页不提供种子(seed)输入,因此不要用它做需要可复现的实验。

性能上没有任何压力:即使一次生成 24 条,也只是对长度 24 的数组做 24 次交换,再加上 24 次左右朝向判定,总共几十次随机调用,耗时在微秒级。真正的限制只来自题库规模——题库固定为 24 组,想在 24 组之外出题,需要先扩充题库。

三条常见误用:把「随机抽 6 题」理解成「每个主题各抽 1 题」——本页混合模式是均匀抽,不保证主题均衡;以为连点两次不会出现重复题——跨次不保证;把生成结果当成心理测评结论——题面是固定的,结论取决于你自己怎么答。

常见问题

为什么连点两次「生成题目」会看到重复的题?

去重只发生在同一次生成内部。两次生成是两次独立的随机抽样,从 24 组里各抽 6 组,出现重叠几乎是必然的:单次 6 组的组合数有 134596 种,两次抽样完全不相交的概率并不高。

为什么不保证每个主题都出现?

混合模式是在 24 组上做均匀洗牌,不按主题配额分配,所以某一次抽到的 6 题可能集中在同一两个主题。要强制覆盖,请改用「主题」下拉框逐主题生成,或者把条数调大。

结果可以被复现吗?

不能。本页使用 Math.random(),没有种子输入,同一台设备连续两次结果也不同。需要可复现的随机,得改用带种子的伪随机算法,那不属于本页的用途。

为什么不用一行 sort 洗牌?

因为 sort(() => Math.random() - 0.5) 的随机比较函数违反传递性,得到的排列概率不均匀,属于有偏洗牌。本页改用 Fisher–Yates,逐位收缩随机范围,保证每个组合等概率。

最多能生成多少题?

全部主题混合时最多 24 题,刚好用尽题库;任意单主题最多 4 题。超过上限会被明确拦下,而不是少给几条。

左右两个选项的位置是固定的吗?

不是。每一题都独立判定一次是否交换左右,所以同一个「A / B」组合这次可能是 A 在前、下次可能 B 在前,用来消除「左边总更诱人」的位置偏差。选项内容本身不会被改写。

题库会联网更新吗?

不会。24 组题目随页面一起加载,全部在本地内存里洗牌,没有任何网络请求;开发者工具的 Network 面板里除了页面自身资源不会有新请求。

这些题能直接商用吗?

题面是通用的话题句式,不涉及第三方素材,但用于广告或出版物时请自行核查是否符合发布平台的规则;生成结果本身不包含任何个人数据。

相关工具

宁愿两难问题生成器 专注「二选一难题」这一种提问句式,相邻的话题与随机工具各有专门页面。