随机抽签工具 从候选项列表里随机抽取,支持多套独立名单、本轮不重复、批量抽多个、数字范围一键填入。基于浏览器密码学级随机源(crypto.getRandomValues())。
| 功能 | 说明 |
|---|---|
| 多套名单 | 多份独立名单(班级A、年会奖池等),候选项/设置/历史互不影响 |
| 本轮不重复 | 抽过的人本轮不再出现,配「重置本轮」按钮控制边界,课堂点名首选 |
| 允许重复 | 一次抽 N 个时允许同一项出现多次(默认关闭) |
| 数字范围 | 输入起止 + 可选补零,一键追加到候选区 |
| 历史记录 | 每份名单独立保存最近 50 次抽签结果 |
Math.random() 这类算法生成,可重现,对一般抽签足够crypto.getRandomValues(),不可预测本工具用 crypto.getRandomValues() + 拒绝采样消除模偏置,对抽奖、抽签、随机点名都安全。
伪随机——大多数语言的内置随机数函数(JS Math.random()、Python random)是伪随机数生成器(PRNG),给定种子可重现序列,理论上可预测。真随机 需要硬件熵源(如 CPU 噪声、键鼠时序、Intel RDRAND 指令)。但伪随机对日常抽签完全够用——抽彩票/密码学场景才需要真随机。本工具用浏览器 crypto.getRandomValues(),已是密码学级随机(CSPRNG)。
人脑对随机分布有错觉——会觉得"连续抽中同一项"反常,但其实概率上完全可能。例如抛硬币 10 次连出 3 次正面是常见结果,不是不公平。判断真不公平:抽 100 次后某项的实际频率是否显著偏离理论概率(用 χ² 检验)。日常抽 5-10 次的小样本,频率波动是正常的。
两个开关作用范围不同——允许重复 控制单次抽签内部:抽 3 个人时同一个人能不能出现两次,默认关闭(一次抽出的 N 个互不相同)。本轮不重复 控制跨多次抽签:抽过的下次不再出现,直到点「重置本轮」开始新一轮。两者开启「本轮不重复」时「允许重复」会被自动禁用(语义冲突)。课堂点名典型用法:勾选「本轮不重复」,每次抽 1 人,全班轮完再重置。
默认随机抽必然会出现重复(小样本下都正常)。最直接的办法:开启 「本轮不重复」 ——抽过的人本轮不再出现,全班轮完再点「重置本轮」开始新一轮,保证每个人都被覆盖一次。需要给不同人不同概率(加权)的场景目前不支持,临时方案是把"想多抽到"的项在名单里写两遍。
可以。本工具支持多套独立名单——候选区右上角的名单按钮里可以新建多份(如"三年二班"、"年会抽奖"、"周会值日"),每份名单的候选项、设置(抽取数量、允许重复、本轮不重复状态)、历史记录都独立保存,切换互不影响。删除某份名单会一并清除它的历史,操作前会二次确认。
可以。候选区下方有「数字范围」按钮,点开后输入起止(如 1—100)和是否补零,点「填入」就把整段数字追加到当前候选区,再按正常抽签流程抽即可。统计学场景(蒙特卡洛模拟、随机采样)建议用 Python numpy.random,本工具偏向日常用。