随机名字抽取器 — 轮盘抽奖、随机分组与公平抽取
粘贴名单列表,转动彩色转盘抽取中奖者;也可切换至批量抽取模式一次性抽取多人,或使用团队模式将所有人随机分成小组。支持移出已中奖者并重新转动转盘进行后续奖项抽取。由于抽取过程完全在您的设备本地运行,没有任何服务器端行数限制:即使导入 10,000+ 个名字也能流畅处理。抽签采用 Fisher–Yates 洗牌算法,并结合设备加密生成器与拒绝采样技术,确保每个名字获得绝对平等的选中概率 —— 而非仅仅是近似相等。
使用场景
如何使用转盘随机抽取名字
每行输入或粘贴一个名字 —— 学生、团队成员或抽奖参与者。名单会自动保存在当前浏览器中。
点击“转动”。转盘会在 4–6 秒内加速旋转并平滑减速,最终停在由加密级随机算法选中的扇区上。
指针所指的名字会以中奖卡片弹出展示,并附带时间戳记录到历史列表中。
移出已中奖者并重新转动抽取下一名;或切换至批量抽取模式一次性抽取多个不重复的名字;亦可切换至分组模式将名单随机分配到 2+ 个大小相近的小组中,并一键复制分组结果。
常见问题
- 我的名单会被上传吗?
- 不会。名单仅保存在浏览器的本地存储中 —— 不会向服务器发送任何数据,清空后数据即被彻底删除。
- 转盘是真的公平吗?
- 是的。转盘最终停留的角度来自 crypto.getRandomValues —— 与密码学加密相同的随机数发生器,并配合拒绝采样避免取模偏差。每个扇区的概率完全相同。
- 最多可以添加多少个名字?
- 没有硬性数量上限。抽签是对您浏览器本地数组的一次简单遍历,无需向服务器发起请求,因此粘贴 10,000+ 个名字也能毫无压力地旋转与打乱 —— 实际瓶颈仅取决于设备的内存性能。当超过几千个名字时,转盘上的扇区文字会因过细而难以辨认,此时使用“批量抽取”或“团队分组”模式会更为清晰。
- 如何将名单随机分成若干小组?
- 切换至“分组模式”,设置小组数量,点击“分组”。系统将执行一次 Fisher–Yates 洗牌,并按轮流发牌的方式分配到各组,确保每个人恰好分入一个小组,且各组人数差异绝不会超过一人。而在单人抽取模式下重复抽取无法做到这一点 —— 同一个名字可能会被重复抽中。
- 同一个人会被抽中两次吗?
- 只有在您将其保留在转盘上时才会出现。每次抽奖后使用“移出并重新转动”功能,即可保证每轮抽出的获奖者绝不重复。
- 转盘最多能容纳多少个名字?
- 转盘本身没有强制数量上限。通常在 30–40 个名字以内,文字标签能保持清晰易读;超出该数量后扇区会变得非常狭窄 —— 对于超长名单,使用批量抽取模式体验更佳。
- 批量抽取模式有什么不同?
- 该模式跳过转盘旋转动画,通过对名单副本进行加密级洗牌,一次性抽取 N 个互不重复的名字 —— 瞬间完成且单次抽取内绝无重复。
- 明天打开网页我的名单还在吗?
- 在同一台设备和同一个浏览器上依然保留 —— 数据会跨会话持久保存在本地存储中。出于隐私安全设计,它不会同步至其他设备。
如何实现真正公平的抽奖(以及常见的三种不公平陷阱)
许多抽奖工具看起来随机,实则并不随机。以下三种缺陷从外部看完全无法察觉 —— 转盘照样在转,名字照样能出来 —— 这也是为什么任何用于严肃场景的抽奖都应当明确声明其算法原理。
| 算法方案 | 选取机制 | 偏差问题 | 评估结论 |
|---|---|---|---|
| Math.random() % n 取模计算 | 缩放浮点数值后取余数 | 取模偏差 —— 靠前的索引被抽中的概率略高,且生成器并非密码学安全级别 | 抛硬币尚可,抽奖不可取 |
| 朴素随机洗牌(两两随机互换) | 循环遍历列表并随机交换成对元素 | 数学证明非均匀分布:某些排列顺序出现的概率明显高于其他排列 | 看似公平,实则不然 |
| Fisher–Yates / Durstenfeld 洗牌算法 | 倒序遍历列表,将每个元素与其自身或其前面的随机元素交换 | 无偏差 —— 每种排列出现的概率完全均等 | 自 1964 年以来公认的标准正确算法 |
| crypto.getRandomValues 结合拒绝采样 | 从操作系统熵池提取随机字节,并剔除会导致范围倾斜的溢出数值 | 完全无偏差,且即使获知历史抽取记录也无法预测未来结果 | 本工具所采用的方案 |
- 拒绝采样是多数简陋实现中所忽略的环节:若将 256 个随机字节值直接映射到包含 10 个名字的列表中,前 6 个名字的中奖概率就会稍高一些。只有丢弃超出范围的末尾数值,才能彻底消除这一偏差。
- 此处的处理容量受限于您的浏览器性能而非服务器配额 —— 由于整个抽签过程仅是对数组的一次快速遍历,因此粘贴并抽取 10,000+ 个名字完全可以轻松完成。
- 移出中奖者后重新转动,可以实现真正无干扰的后续名次抽取。而批量抽取模式则是在单次洗牌中直接提取多个不重复名字,这正是班级分组的科学方法 —— 否则单次重复抽取很容易抽出相同的人。
注重隐私设计。名字抽取完全在您的浏览器本地完成,名单仅保存在当前浏览器的本地存储中 —— 不会向服务器发送任何数据。