使用方法
- 打开页面默认就带示例:数量 10、真比例 50%、种子 5551234,结果区已显示十个 True/False,你不需要先输入任何东西。
- 改「生成数量」决定要几个结果;改「真比例」控制 True 出现的百分比倾向;改「随机种子」切换不同的确定序列。
- 在任意输入框里按回车也能立即重算;点「复制结果」把整串 True/False 复制到剪贴板。
- 点「导出 CSV」把序列存成带 BOM 的文件,或点「复制对照表」复制下方真比例对照表的制表符文本。
- 本页不联网、不写本地存储,刷新即回到默认示例,所有计算都在你自己的浏览器里完成,输入内容不会离开设备。
- 本工具给出的序列是概率性结果,真比例越高,True 出现越多,但具体每次由种子决定,可复算不可预测。
这个 随机真假生成器能解决什么
很多场景需要一个「看起来随机、又能复现」的真假判定:教学里演示伯努利试验、抽奖环节做公平的命中与否、或者调试代码时造一批确定性的布尔数据。这个随机真假生成器用固定种子算法解决的就是「可复核的随机布尔」这一需求。
第一类用途是随机判定与抽奖。游戏里决定是否命中、活动里随机发奖,用本工具给定种子,主办方公布种子后参与者可以自己复算,确保没有暗箱操作,公信力更强。
第二类用途是教学与统计演示。讲概率、二项分布时,用本工具批量造 True/False 序列,学生能对照真比例观察频率,直观理解「大数定律」。
第三类用途是程序测试与占位数据。开发需要布尔字段的表单、开关逻辑时,先用本工具批量造一批确定性 True/False 做联调,比手写死数据更省事,上线前再换成真实逻辑。
第四类用途是头脑风暴与决策辅助。当团队要随机选「做 / 不做」时,本工具一键给出序列,省去抛硬币或抽签的麻烦,且结果可记录种子反复使用。
需要强调的是,随机真假生成器 的所有生成都在本地完成,不联网也不上传。你可以把种子和结果放心分享给别人复核,过程中没有任何数据离开你的设备。此外,由于序列完全由种子决定,你还能把一组「数量、真比例、种子」作为参数存档,下次想复现场景时直接填入即可,不必重新随机,这在需要可重复实验的课堂演示里尤其好用。正因为结果可复算,它也适合做随机化的 A/B 分配:先用本工具产出一组布尔标记,再按标记把样本分到两组,整个过程留痕可查,比口头抛硬币更严谨,也便于事后向他人证明分组没有被人为操控。
原理和变量
本工具采用与方向生成器一致的线性同余式:每一轮先把种子更新为 s = (Math.imul(s, 1103515245) + 12345) & 0x7fffffff,再把得到的 s 除以 2147483647 得到一个 0 到 1 之间的小数 r。若 r 小于「真比例 / 100」则判为 True,否则为 False。因为每一步只依赖前一步的 s,所以给定初始种子,整条序列完全确定。
真比例只是概率倾向,不是硬性配额:真比例 50% 表示每次有约一半概率得 True,长序列里 True 占比会趋近 50%,但短序列可能出现偏差,这是随机的正常表现。值得注意的是,固定种子算法保证的是「可复现」而非「不可预测」,也就是说任何拿到种子的人都能重跑出同一串结果;如果你需要不可预测的保密场景,应当改用真随机源或每次更换种子,而不是依赖同一固定种子。这也提醒我们,真比例只是概率倾向,观察长序列的 True 占比才更接近设定值,单看几个结果就下结论容易误判。下面变量表说明各环节含义。
| 变量 | 含义 | 说明 |
|---|---|---|
| seed | 随机种子 | 初始整数,决定整条序列 |
| s | 当前状态 | 每轮线性同余更新 |
| r | 随机小数 | s / 2147483647,0 到 1 |
| ratio | 真比例 | 0 到 100,阈值 = ratio/100 |
| bool | 判定结果 | r < ratio/100 为 True |
完整示例
下面这组示例全部由页面算法原样得出,可直接对照你的手算。数量 10、真比例 50%、种子 5551234:第一轮 s 更新后得到小数 r,若 r 小于 0.5 记 True,否则 False,依次得到 True、True、True、False、False、True、False、True、True、True,与上方结果区、下方对照表完全自洽。
如果你想验证手算,把种子代入 s=(s*1103515245+12345)&0x7fffffff,再算 r=s/2147483647,比较 r 与 0.5 大小决定 True/False,逐步做完必然和本工具一致。这套方法是你在不支持本页的环境里手动复现结果的可靠办法。
数量=10 真比例=50%
种子=5551234
True True True
False False True
False True True True
s=(s*1103515245+12345)&0x7fffffff
r < ratio/100 ? True : False
真比例期望对照表
下表列出不同「数量 × 真比例」下的期望 True 数量(共 14 行,前 12 行直接展示,点「加载更多」展开剩余项)。期望值为 数量 × 真比例 / 100 四舍五入,仅供参考;实际序列由种子决定,可能略有偏差。
| 数量 | 真比例(%) | 期望 True 数 | 说明 |
|---|---|---|---|
| 10 | 0 | 0 | 全部为 False |
| 10 | 10 | 1 | 约 1 个 True |
| 10 | 20 | 2 | 约 2 个 True |
| 10 | 30 | 3 | 约 3 个 True |
| 10 | 40 | 4 | 约 4 个 True |
| 10 | 50 | 5 | 约一半 True |
| 10 | 60 | 6 | 约 6 个 True |
| 10 | 70 | 7 | 约 7 个 True |
| 10 | 80 | 8 | 约 8 个 True |
| 10 | 90 | 9 | 约 9 个 True |
| 10 | 100 | 10 | 全部为 True |
| 20 | 50 | 10 | 两倍数量半数 |
| 50 | 50 | 25 | 大样本半数 |
| 100 | 50 | 50 | 大样本半数 |
结果边界与错误提示
- 生成数量为空或非数字时,提示「数量不合法:请输入 1 到 500 之间的整数」,不会静默生成一串乱结果。
- 生成数量超过 500 时,提示「数量不合法:请输入 1 到 500 之间的整数」,避免一次输出过长难以阅读。
- 真比例为空、负数或超过 100 时,提示「真比例不合法:请输入 0 到 100 之间的整数」,保证阈值在合理范围。
- 随机种子为空、负数或非整数时,提示「种子不合法:请输入非负整数」,保证序列可被复算。
- 结果区与错误区都带 role="alert" 语义,内容一变就会被屏幕阅读器播报;所有生成本地完成,不联网也不写存储,刷新即还原默认示例。
- 同一种子多次运行必然得到完全相同的序列,这是固定种子算法的特性,不是 bug,便于分享与复核。
- CSV 导出在文件头写入 UTF-8 BOM(\ufeff),Excel 打开中文不会乱码;TSV 复制是纯制表符分隔文本,粘进任意表格软件都会自动分列。
- 本工具只做布尔抽样,不对结果做排序或去重;真比例是概率倾向而非硬性配额,短序列可能出现偏离。
常见问题
为什么同一个种子每次结果都一样?
因为本工具使用固定种子的线性同余算法,序列完全由初始种子决定,所以相同种子必然产出相同 True/False 序列。这正是「可复核随机」的设计目的,方便你分享种子让别人验证。
真比例 50% 为什么不是正好 5 个 True?
真比例只是每次抽取的概率,不是硬性配额。数量 10、比例 50% 的期望是 5 个 True,但单次序列可能出现 4 或 6 个,这是随机的正常表现;数量越大越接近比例。
真比例是硬性配额吗?
不是。本工具按概率判定每一次,长序列里 True 占比会趋近真比例,但任意短序列都不保证精确配额,若你需要严格配额请改用分段采样方案。
能不能导出成 Excel 能打开的文件?
可以。点「导出 CSV」会生成带 BOM 的 CSV,Excel 直接双击就能正确显示;点「复制对照表」则复制制表符分隔文本,粘进表格软件自动分列。
我想换一组不同的序列怎么办?
直接修改「随机种子」为一个新整数再生成即可;种子不同,整条序列就不同。你也可以调大「生成数量」一次性拿更多结果。
导出的 CSV 为什么带 BOM?
因为 Excel 打开无 BOM 的 UTF-8 文件时常把中文显示成乱码,BOM 能让 Excel 正确识别编码。TSV 复制走剪贴板不经文件,所以不需要 BOM。
我的种子和结果会上传吗?
不会。所有生成计算在浏览器本地进行,不联网、不写存储,刷新即还原默认示例,没有任何数据离开你的设备,可以放心使用。
为什么结果区和示例不一致?
请确认数量、真比例与种子都和示例一致;任一不同都会得到不同的序列。保持数量 10、真比例 50、种子 5551234,结果必然是 True True True False False True False True True True。