序列与列表洗牌器
使用Fisher-Yates算法以随机顺序洗牌列表、序列或数据。
列表与序列打乱器:随机化文本行、数字与 CSV 项目
无论你是在确定课堂演讲的公平发言顺序、随机排列选择题题库以防作弊、打乱音乐播放列表队列、创建随机学习闪卡训练,还是生成测试数据集排列,我们的随机序列与列表打乱器都能保证数学上完全无偏的结果。
本工具由渐近最优的Fisher-Yates(Knuth)洗牌算法驱动,支持按换行符、逗号分隔值(CSV)、空格分隔单词以及数字序列(1 到 N)进行切分。添加自定义序号前缀(1.、2.、3.),并按下Spacebar即刻重新洗牌。
Fisher-Yates 算法
消除排序偏差。每种可能的排列都拥有精确相等的 1/n! 概率。
多种分隔符模式
可打乱整段文本行、单个单词、逗号分隔列表或自定义序列区间。
序号前缀(1..N)
自动为项目加上序号(1.、2.、3.),适用于会议议程和发言日程安排。
100% 客户端隐私
机密的公司议程、学生名单和私人笔记绝不会离开你的本地浏览器。
📊洗牌算法与排列公平性对比
| 洗牌方法 | 时间复杂度 | 统计偏差 | 排列公平性 |
|---|---|---|---|
| Fisher-Yates / Knuth(本工具采用) | O(n) 线性 | 零偏差(均匀 1/n!) | 完美的数学分布 |
| Array.sort(Math.random - 0.5) | O(n log n) | 严重的不均匀偏差 | 有缺陷(某些排序出现概率高达 3 倍) |
| 随机键插入法 | O(n log n) | 低至中等 | 尚可接受但计算效率低 |
❓常见问题
为什么 Fisher-Yates 洗牌算法优于普通的随机排序?▾
许多网站使用诸如 arr.sort(() => Math.random() - 0.5) 这类朴素技巧,它破坏了排序算法的传递性,会产生严重的位置偏差。Fisher-Yates(Knuth)算法以 O(n) 时间只遍历列表一次,将每个元素与随机选取的前置元素交换,从而保证 n! 种可能排列中每一种都拥有精确相等的概率。
可以打乱逗号分隔值(CSV)或单个单词吗?▾
可以!在设置中选择你想要的分隔符:换行符(文本行)、逗号(CSV 项目)、空格(句子中的单词)或分号。工具会按你选择的格式重新拼接输出。
教师如何在课堂演示和考试中使用它?▾
教师可以粘贴学生名单并开启“编号输出(1.、2.、3.)”,随机分配口头演讲的出场顺序。还可以粘贴选择题选项或试题库,生成随机化的试卷版本。
可以生成随机化的数字序列(例如 1 到 50)吗?▾
可以!点击“数字范围(1 到 N)”预设并输入上限(例如 1 到 100),工具会生成并打乱该范围内的所有整数,且不会出现重复数值。
处理大型文件时有最大行数限制吗?▾
由于 O(n) 算法原生运行于 JavaScript 内存中,该打乱器可以在不到 50 毫秒的时间内轻松处理超过 50,000 行的列表。
可以使用空格键重新洗牌吗?▾
可以!只要输入文本框未被聚焦,按下空格键就会立即重新打乱你的列表并显示全新的随机顺序。