使用方法
- 要一个答案就点「抽一次」,大字号结果区给出「是」或「否」。这一步不读任何输入框,所以任何状态下都能点。
- 要一串结果就在「批量生成条数」里填数量,示例 10,合法范围 1 到 200;点「批量生成」后逐行列出每一条。
- 在条数输入框里按裸 Enter 等同于点「批量生成」。页面打开时已经预置了 10 条示例,直接可用。
- 批量结果下方给出三个统计量:是/否各多少条、各占百分比、本轮最长连续同向出现了几次。
- 「复制结果」把整批结果写入剪贴板;「导出概率表 CSV」下载带 BOM 的 15 行概率表;「复制概率表 TSV」复制成制表符文本。
- 「加载更多」把概率表从 12 行展开到 15 行,方便查更大的连续次数。
这个是非选择器能解决什么问题
第一个用途是替自己做一次无偏好选择。中午吃什么、要不要现在去健身房、这个方案 A 和 B 先试哪个——当你反复权衡还是拿不定主意时,真正缺的不是更多分析,而是一个不偏向任何一方的触发器。是非选择器 给的就是这个触发器。
第二个用途是多人决策的公平抽签。正反两方各执一词时,让工具给出结果比自己拍板更容易被双方接受;点一次就能当众验证,不存在「谁偷偷改了结果」的空间。
第三个用途是教学与直觉校准。很多人以为「随机」应该看起来交错、均匀,一旦看到连续出现 5 个「是」就觉得机器坏了。本页把连续同向的概率表直接摆在下面:100 次里出现一次连续 5 次同向的概率是 97.17%,几乎是必然——这就是校准直觉最直观的一组数字。
这个是非选择器 不做的事也要说清楚:它不做三态判定(「是/否/可能」属于随机转盘那一类,本页严格二元);不做多人投票的统计汇总;不记录历史结果,刷新即清空;也不做加密级随机,见下一节的说明。
原理与规则说明
判定只用到一行逻辑:取一个 Math.random() 的返回值 r,它落在 [0, 1) 区间上,然后判断 r < 0.5 就是「是」,否则是「否」。
阈值为什么取 0.5 而不是别的数:因为 0.5 在二进制里可以被精确表示(它是 2 的负一次方),而 Math.random() 的输出是按双精度浮点生成的、在 [0, 1) 上近似均匀的 53 位有效数字。用 0.5 切下去,两个区间长度完全相等,各占 50%,不会像「先用百分数取整再比较」那样在边界上引入一丁点偏差。
随机源本身需要说清性质。Math.random() 是伪随机数生成器,不是加密级随机源:ECMAScript 规范只要求它「近似均匀分布」,并不要求不可预测。以 V8 为例,底层是 xorshift128+ 算法,内部状态 128 位、周期约 2 的 128 次方减一;它在统计上看不出规律,但只要知道内部状态,后续输出就完全可推算。
因此本页明确声明:判定结果不可预测,但不具备密码学强度。日常的选择、抽签、破冰完全够用;一旦涉及抽奖发奖、发放密码或验证码、密钥生成这类「必须不可预测」的场景,要改用 crypto.getRandomValues()——那是按 NIST SP 800-90A 一类标准实现的密码学安全随机源。这也是本页与「随便找个随机数网页」的差别:把能力边界写在页面上,而不是让你误以为它什么都能担。
批量模式的完整链路是:每条独立取一次随机数并判定 → 顺序拼接成列表 → 遍历统计是/否条数、计算百分比、跟踪当前连续同向长度并记录最大值。每次判定互相独立,所以批量的第 n 条不受前 n−1 条影响。
「连续同向」这件事值得单独算一笔。恰好连续 k 次同向的概率是 2 × (1/2)^k,也就是 2 的 (1−k) 次方:连续 2 次的概率是 50%,连续 5 次是 6.2500%,连续 10 次是 0.1953%。但「在 100 次里至少出现一次连续 k 次」是另一回事,不能用简单乘法相乘——那些连续段会互相重叠。本页用动态规划逐位推进状态(当前连续长度 1 到 k−1 的概率分布)算出精确值:100 次里至少出现一次连续 5 次同向的概率高达 97.1690%,连续 7 次也有 54.2337%,直到连续 10 次才降到 8.6659%。下表的第二列就是这个精确值。
完整示例(数值仅作演示)
默认设置是批量条数 10,与页面预置的 10 行结果、以及统计行三处一致。预置结果依次是:是、否、是、是、否、否、是、否、是、否。
- 统计:是 5 条、否 5 条,各占 50.0%;
- 最长连续同向:第 3、4 条连续两个「是」,第 5、6 条连续两个「否」,最大值 2;
- 这 10 条的不同排列共有 2 的 10 次方 = 1024 种,所以「刚好 5 比 5」并不是最可能出现的比例,出现 6 比 4 或 4 比 6 反而更常见;
- 把条数改成 100,出现至少一次连续 5 次同向的概率是 97.1690%——这就是为什么长序列里冒出「连续五六个同一面」完全属于正常波动。
再看一条最容易误解的边界:已经连续出现 5 个「是」之后,第 6 条仍然是「是」的概率还是 0.5,与前面出现过什么无关。而「连续 6 条全是是」的前验概率是 2 的负 6 次方 = 1.5625%,这两个数字不矛盾:前者是条件概率(已知前 5 条),后者是整段序列从头开始的概率。把两者混为一谈,就是典型的赌徒谬误。
输入范围与对照表
全页只有一个输入框:批量条数接受 1 到 200 的整数。下面这张表是连续同向的概率参考,第一列的第二行起对应「恰好连续 k 次同向」,第三列是「在 100 次投掷中至少出现一次连续 k 次同向」的精确值。
| 项目 | 取值 | 说明 |
|---|---|---|
| 单次结果是 | 50% | 阈值 0.5 把 [0,1) 等分 |
| 单次结果否 | 50% | 与「是」互补 |
| 连续 5 次同向 | 6.2500% | 2 的负 4 次方 |
| 连续 10 次同向 | 0.1953% | 2 的负 9 次方 |
| 100 次内出现连续 5 次 | 97.1690% | 动态规划精确值 |
| 100 次内出现连续 7 次 | 54.2337% | 动态规划精确值 |
| 批量上限 | 200 条 | 超过会被拒绝 |
| 排列总数(10 条) | 1024 | 2 的 10 次方 |
点「导出概率表 CSV」得到 15 行明细(带 BOM,Excel 打开不乱码);点「复制概率表 TSV」复制成制表符文本,可直接贴进表格软件。
输入范围、边界与精度说明
批量条数的合法区间是 1 到 200,且必须是整数。空值提示「不能留空」,非数字提示「要填数字」,小数提示「要填整数」,0、负数与超过 200 的取值分别提示「至少为 1」与「超出上限 200」——每一条都会写出你实际填的内容,不会静默取整或悄悄按上限执行。
「抽一次」没有任何前置条件,也不读输入框,所以在任何输入状态下都能得到结果;这是刻意的设计,否则用户填错一个数字就连单次判定都用不了。
结果的不可复现性是设计而不是缺陷:本页使用 Math.random(),不提供种子(seed)输入,因此同一台设备连续两次结果不同,也无法重放上一次的结果。需要可复现的随机序列,得改用带种子的伪随机算法,那不属于本页的用途。
概率精度方面,表里的百分比保留四位小数。例如连续 15 次同向是 0.0061%,这已经是「基本不可能在一次会话里看到」的量级;而 100 次内至少出现一次连续 4 次同向却有 99.9715%,几乎必然出现。两个数字并列,正好说明「单点概率极小」与「长序列里几乎必然出现」可以同时成立。
三条常见误用:把「已经连续 5 个是」当成「下一个更可能是否」——每一次判定都独立,条件概率仍是 0.5;把本页当成预测工具——它不分析任何数据,只做均匀抽样;把伪随机当成加密随机去抽奖发奖——需要不可预测性时必须换成 crypto.getRandomValues()。
常见问题
连续出现 5 个「是」,是不是说明这个工具坏了?
不是。连续 5 次同向的概率是 6.2500%,在 100 次投掷里至少出现一次的概率高达 97.1690%,几乎是必然会看到的现象。真正的异常是长期比例明显偏离 50%,而不是出现了长连串。
已经连续 5 个「是」了,下一次是不是更可能出「否」?
不是。每次判定互相独立,第 6 次仍然是「是」的条件概率就是 0.5。把「连续 6 次全是是」的 1.5625% 当成下一次的概率,是最典型的赌徒谬误。
为什么结果不能复现?
因为本页用 Math.random() 且不提供种子输入,每次调用都会推进内部状态。这保证了结果无法被预测,代价是无法重放;需要可复现时要用带种子的随机算法,本页不提供。
这个随机数够不够安全?
日常选择足够,密码学强度不够。Math.random() 是伪随机生成器,知道内部状态即可推算后续输出;抽奖发奖、生成密码或验证码这类场景应改用 crypto.getRandomValues()。本页在正文里明确写了这条边界。
和随机转盘有什么区别?
那个是「是 / 否 / 可能」三态并带转盘动画,用来做带悬念的展示;本页严格二元、各 50%,并把概率算法写清楚,用途是无偏好决策与概率校准。
最多能一次生成多少条?
200 条。超过会被明确拒绝并提示上限,而不是默默按 200 执行。批量生成只做顺序拼接与计数,200 条在一次遍历里就能算完。
结果会被记录或上传吗?
不会。判定、统计、拼接全部在页面内存里完成,没有网络请求,也没有本地存储;刷新页面后结果即消失,开发者工具的 Network 面板可以核对。
统计里的「最长连续同向」是怎么算的?
遍历整批结果时维护一个当前连续长度计数器:与上一条相同就加一,不同就重置为 1,并随时记录出现过的最大值。例如「是是是否」的最长连续同向是 3。
相关工具
是非选择器 只做「二元无偏好判定」,需要更多选项时下面这些页面各有分工。