列表随机排序
把名单粘进来,一行一个,马上得到公平的随机顺序。人名、任务、歌曲、抽奖名单都可以。
结果
在左侧粘贴名单,然后点击随机排序。
- 抽签决定汇报顺序粘贴全班或小组名单,打乱后的序号就是答辩、演讲、述职的上台顺序,谁也没话说。
- 抽奖名单粘贴参与者昵称,先去重防止一人多次,再取前 N 个当中奖者,后面的顺延当候补。
- 选秀、轮流顺序球队选人、桌游座位、KTV 点歌、值日轮换,一次排好。
- 歌单与复习顺序打乱歌曲、单词卡或复习章节,别每次都从第一章开始。
三步打乱一个名单
粘贴名单
每行一项。从 Excel 或 WPS 表格复制一整列,粘贴后自动就是一行一个。名单会保存在本浏览器,下次打开还在。
整理一下
抽奖、抽签时建议保持去除重复;去掉空格和空行会自动忽略多余的空白。
随机排序
可以全部打乱、只取前 N 个,或者分成几组。复制带序号的结果发到微信群,或放到转盘上现场转。
经得起质疑的随机顺序
为什么用 Fisher–Yates,而不是“按随机数排序”
很多人在 Excel 或代码里打乱名单的方法,是让排序比较函数随机返回正负,或者每次比较都重新取随机数。看上去是乱的,但并不公平。排序算法默认比较结果前后一致,一旦比较是随机的,有些位置就会明显更容易出现某些元素。名单只有五个人时,有的人留在原位的概率可能远高于五分之一。
Fisher–Yates 洗牌的做法是:从最后一个位置往前走,每一步把当前位置和它前面(含自己)随机选中的一个位置交换。n 个元素一共做 n−1 次随机选择,可选范围依次是 n、n−1……正好得到 n 的阶乘种结果,每一种排列一一对应、概率相等。
公平还取决于随机数本身。本工具用 crypto.getRandomValues 加拒绝采样取随机整数,在 7 个位置里选一个时就是严格的七分之一,不会因为取余而偏向某几个。
| 方法 | 每种顺序概率相同吗 | 说明 |
|---|---|---|
| Fisher–Yates + 无偏随机整数 | 是 | 本工具采用的方法,名单再长也很快。 |
| 随机比较函数排序 | 否 | 结果取决于浏览器的排序实现,靠前的元素往往不太动。 |
| Excel 加一列 RAND() 再排序 | 基本是 | 每行一个固定随机数时是公平的,但 RAND() 每次编辑都会重新计算。 |
| 纸条抽签 | 是,前提是搅匀 | 事后很难证明,纸条也容易粘在一起。 |
选择合适的输出方式
三种方式都来自同一次随机打乱,所以取前三个和一个个抽三次一样公平。
| 需求 | 方式 | 小提示 |
|---|---|---|
| 汇报、答辩、轮流顺序 | 全部打乱 | 复制带序号的结果,直接发班级群或工作群。 |
| 从名单里抽中奖者 | 取前 N 个 | 先去重。排在 N 之后的就是现成的候补名单。 |
| 分小组、分队 | 随机分组 | 设的是组数而不是每组人数。23 人分 4 组,就是 6、6、6、5。 |
| 要现场揭晓的效果 | 任意方式后放上转盘 | 先打乱一个候选名单,再在大屏上转出最终结果。 |
用名单做一次公平的抽奖
- 把参与者昵称整理成一列,一行一个,比如从群接龙或问卷导出里复制。
- 活动规则是每人限一次时保持去除重复;如果有人按规则获得了多次机会,就取消勾选。
- 选择取前 N 个,填入奖品数量。
- 全程录屏,或截图保存完整结果,包括中奖者后面的候补。
- 中奖者逾期未领奖时,按打乱后的顺序顺延给下一位,不要重新抽。
抽的是评论区的人?评论抽奖工具可以自动帮你整理参与名单。
常见问题解答
怎么把一个名单随机打乱顺序?
把名单粘贴进来,一行一个,点击随机排序即可。结果会显示每一项的新顺序和序号,再点一次就换一个新顺序。
打乱的结果是真的随机吗?
是的。使用 Fisher–Yates 洗牌算法,随机数来自 crypto.getRandomValues,名单的每一种排列出现的概率都完全相同。
可以先去掉重复的名字再打乱吗?
可以,去除重复默认就是开启的。会忽略大小写和多余空格,并提示一共跳过了几行重复内容。
只想从名单里抽几个人怎么办?
把输出方式切到取前 N 个,填上要抽的人数。结果是打乱后的前 N 位,相当于不放回地抽 N 次。
能把名单随机分成几组吗?
能。选择随机分组并设定组数,打乱后按顺序轮流分到各组,各组人数尽量平均。
下次打开名单还在吗?
在同一台设备的同一个浏览器里会保留,只存在本地缓存,不会上传。点清空即可删除。
名单最多能有多少行?
几千行都没问题。只有放上转盘时最多取前 100 项,因为扇区太多就看不清了。