随机抽取

周六谁值班,谁第一个上台,剩下的那张票归谁。要公平,就得靠谁也推不动的抽签——所以这里用的是浏览器的加密级随机数,而不是普通随机数,名单也不会离开你的设备。

抽取用的是浏览器的加密级随机数,而不是普通随机数:排班、抽奖和发言顺序上,这个差别是要紧的。什么都不会发出去,名单也只留在这台设备上。

相关工具: 随机数生成器 · 密码生成器 · UUID 生成器 · 在线计时器

使用方法

  1. 粘贴名单,每行一个名字。
  2. 选择要做的事:抽名字、打乱顺序,或者分组。
  3. 点击按钮。想抽几次都可以。

实用说明

为什么普通随机数不够用

常见的 `Math.random()` 并不是为要紧的事准备的:它的序列可以由先前的值推断出来。当抽签决定值班、奖品和发言顺序时,这个差别是真实存在的,而避开它不花什么代价——浏览器本来就带着加密级随机源。旁边还有两个坑:取余数会让靠前的名字更容易被抽中,用随机比较函数打乱会产生不均匀的顺序。这两样这里都没有用。

分组是轮流发的

把七个人分三组,如果按顺序切成三段,会得到 3、3、1——最后一组总是吃亏。像发牌那样一个一个轮着发,得到的是 3、2、2。这就是「写起来省事的算法」和「落到里面不憋屈的算法」之间的差别。

常见问题

抽取真的随机吗?

用的是浏览器的加密级随机源,并且去掉了取余带来的偏差:每个名字机会相同。打乱用的是 Fisher–Yates,因此所有顺序等概率。

名单会被发送吗?

不会。一切都在浏览器里完成,名单只保存在这台设备上,免得你下次重新输入。

同一个名字会被抽两次吗?

只有勾选了才会。默认情况下抽中的人就出局了——发奖和排班正需要这样。

如果要的比名单里的还多呢?

会把名单里的人全给你,并写一行说明一共有多少,而不是悄悄给个短名单。

相关工具