随机抽签工具 从候选项列表或数字范围内随机抽取,支持洗牌不重复、加权概率、批量抽多个。基于浏览器密码学级随机源(crypto.getRandomValues())。
两种抽签模式:
| 模式 | 用法 | 例 |
|---|---|---|
| 候选项 | 输入候选项列表,抽 N 个 | 抽中午吃什么 |
| 数字 | 指定范围(如 1-100),抽 N 个 | 抽奖号 |
抽签算法选择:
伪随机 vs 真随机:
crypto.getRandomValues(),不可预测本工具用 crypto.getRandomValues(),对抽奖、抽签、随机点名都安全。
避免”重复抽中同一人”的实战技巧:
伪随机——大多数语言的内置随机数函数(JS `Math.random()`、Python `random`)是伪随机数生成器(PRNG),给定种子可重现序列,理论上可预测。真随机 需要硬件熵源(如 CPU 噪声、键鼠时序、Intel RDRAND 指令)。但伪随机对日常抽签完全够用——抽彩票/密码学场景才需要真随机。本工具用浏览器 `crypto.getRandomValues()`,已是密码学级随机。
人脑对随机分布有错觉——会觉得"连续抽中同一项"反常,但其实概率上完全可能。例如抛硬币 10 次连出 3 次正面是常见结果,不是不公平。判断真不公平:抽 100 次后某项的实际频率是否显著偏离理论概率(用 χ² 检验)。日常抽 5-10 次的小样本,频率波动是正常的。
两种算法——洗牌法(Fisher-Yates shuffle):把所有候选项随机打乱顺序,依次取出,保证不重复且公平。记录法:每次抽完把已抽的从池子移除,再从剩余里抽。本工具默认洗牌法(更高效)。如果想"抽完一轮后重新洗"循环,开启"放回模式"。
常见做法——累计区间法:把每项的权重加起来作为总区间,随机数落在哪段就抽中哪个。例如 A 权重 5、B 权重 3、C 权重 2 → 总 10,0-4 抽 A、5-7 抽 B、8-9 抽 C。本工具支持给候选项设权重,权重越高被抽中概率越大。
默认随机抽必然会出现重复(小样本下)。改进方案——(1) 不重复模式:每个人最多抽 1 次,全部抽完才重置;(2) 降权重抽:被抽过的人下次权重降低;(3) 分批轮次:把团队分成几批,每批内独立抽签,全部用完再轮下一批。本工具支持模式切换。
可以。本工具支持两种模式——候选项抽签:从你输入的列表里抽(人名、菜单、选项等);数字抽签:指定范围 + 抽几个 + 是否重复,常用于抽奖号、模拟掷骰子。统计学场景(蒙特卡洛模拟、随机采样)建议用 Python `numpy.random`,本工具偏向日常用。