文本随机打乱
文本所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
把一段文本的顺序打乱,三种单位各自保留自己该保留的东西:按行只换行的先后(行数、行内容都不变);按字符在每一行内部重排(行结构不动,换行不会被当成一个可以乱跑的字);按词只换词的先后,词之间的间隔与首尾缩进留在原位。 洗牌用的是 Fisher–Yates。 常见的「随机交换几次」写法会产生有偏的排列 —— 某些顺序出现的概率明显高于另一些,而这一点在名单、抽奖这类用途上是实打实的错误。从后往前那版 Fisher–Yates 让每一种排列的概率相等。 它不是实时刷新的。 实时模式会在每次按键后重算,而你刚看到想要的顺序、还没来得及复制,下一个键就把它换掉了。所以这里要显式点「重新打乱」。
功能
- 三种打乱单位:行、字符、词
- Fisher–Yates 洗牌,每一种排列的概率相等,不是「随机交换几次」的近似
- 按词打乱保留首尾空白与词间间隔,缩进不会跑到行尾
- 按字符打乱保留行结构,emoji 与 ZWJ 序列按字形簇整体移动
- 点一次换一批;不点就不会自动重算,方便你看清楚再复制
- 不打乱空行之外的东西 —— 行模式里空行也是普通一行
- 全程在浏览器本地计算,内容不上传
使用方法
- 粘贴要打乱的文本
- 选一个打乱单位
- 点「重新打乱」换一批,满意后点「复制」
常见问题
- 为什么有时候打乱之后看起来没变?
- 因为随机本来就允许出现原来的顺序。只有两行时,打乱后有 50% 的概率还是原顺序;三行时约 17%。要判断它是不是真的在工作,多打乱几次看结果会不会变 —— 也可以直接看更长的一批:十行的输入连续点几次几乎不可能每次都一样。这里刻意没有加「保证和上次不同」的补丁:加了之后,排列的分布就不再均匀了。
- 为什么不能边打字边打乱?
- 因为「打乱」这件事无法从输入反推。实时模式每次按键都会重算一遍,你刚看到想要的顺序、鼠标还没移到复制按钮上,下一个键就把它换掉了。所以要显式点一次按钮 —— 与 UUID 生成器、密码生成器同一条理由。
- 打乱是均匀的吗?
- 是。用的是 Fisher–Yates 洗牌(从后往前那一版),每一种排列的概率都等于 1/n!。常见的「遍历一遍、每个元素与随机位置交换」写法会产生可测量的偏差,在抽奖、抽样、随机分组这类用途上会真的出问题。
相关工具
文本逆序翻转
文本把文本按字符、整段、行序或词序倒过来,四种翻转各自独立,emoji 与组合变音符号不会拆坏。全部在浏览器本地完成。
文本清洗
文本清洗从日志或表格里复制出来的一列内容:去重行、排序、去空行、去首尾空白、去行号、合并多空格,规则逐条开关。粘贴的内容只在本机处理。
随机汉字
生成器随机生成汉字串:常用字(约 850 个)与生僻字(CJK 基本区两万余个码位)两档,可指定字数与每行几个。
文本对比
文本把两份文本逐行对比,高亮标出新增、删除与未改动的行,改动按最小差异对齐,而不是整段标成变了。全部在浏览器本地完成,内容不上传。
字数统计
文本中英混排的文本到底有多长?中文按字、英文按词分开统计,给出字符数、行数、字节数、阅读与朗读时长,以及会被切成几条短信。全部在本机完成。
命名风格转换
文本在十四种命名风格之间转换标识符,拆词时认得 fooBarBaz 与 FOO_BAR 这类混写,连续大写也会按词拆开。全部在浏览器本地完成,不上传。