随机点名与抽取
文本所有处理都在浏览器本地完成,数据不上传服务器
把名单一行一个粘进来,随机抽出几个。 随机源用的是 `crypto.getRandomValues`,不是 `Math.random`。 抽奖这件事上「能不能被预测」是实打实的问题:`Math.random` 在部分引擎上是一段能被反推的伪随机序列,观察到足够多的结果就能算出下一个。而抽取本身是公平的 —— 每一个候选项被抽中的机会一样。 「不重复」默认打开,抽不满就报错。 从 5 个人里抽 10 个不重复的只能出 5 个,这时工具直接说「名单里只有 5 项」,而不是悄悄给你 5 个或者偷偷允许重复 —— 前者让你以为工具坏了,后者让「不重复」这个承诺失效。要允许重复(抽完放回去那种),把那个勾去掉。 「按名单顺序排」是给念名单准备的。 抽奖的观感本来就是随机的顺序;但抽完要按花名册念、或者要拿去和原表对照时,跳着念很别扭,勾上它就按原来那行的先后重新排一遍。 它和文本随机打乱的分工:那个给你打乱后的全部,这个给你抽中的那几个。
功能
- 从名单里随机抽 1–200 个
- 随机源是 `crypto.getRandomValues`,不是可预测的伪随机序列
- 拒绝采样保证每个候选项机会均等,靠前的不会更容易被抽中
- 默认不重复;抽不满时直接报错并说清名单里有多少项
- 可选允许重复(抽完放回的那种)
- 可选把抽中结果按名单原顺序重排
- 忽略空行与每项的首尾空白,粘贴时不用先清理
- 结果逐行可复制,每行带抽取序号
使用方法
- 把名单一行一个粘进输入框
- 填要抽几个,按需要勾上「允许重复」或「按名单顺序」
- 点「重新抽取」换一批,点复制取走结果
常见问题
- 抽奖公平吗?会不会有偏向?
- 公平,两个环节都处理了。随机源是操作系统提供的密码学随机数(`crypto.getRandomValues`),不对外暴露内部状态,也没法从历史结果反推下一个 —— 用 `Math.random` 做抽奖在部分引擎上是可以被预测的。取值方式用拒绝采样而不是取模:取模会让名单靠前的几个位置出现得略多一点(比如 6 个人分 256 个随机字节,前 4 个位置各多 1 个来源),差别很小但真实存在,而抽奖恰恰在乎这个。
- 为什么「不重复」抽不满会报错?
- 因为那是一个承诺。你要 10 个不重复的,我给你 5 个,你会以为工具坏了或者自己数错了;我给你 10 个里面有重复,你会以为去重没生效。两种都比报错糟 —— 报错至少告诉你「名单里只有 5 项」,你立刻知道该换名单还是该勾上「允许重复」。
- 和「文本随机打乱」有什么区别?
- 打乱给你的是打乱后的全部内容,还要自己划出前面几个,而且「这次抽中的是哪几个」没有被高亮出来。这个工具直接给抽中的那几个,带序号、可逐行复制。要做「把名单随机排序后全部给我」用打乱;要「抽三个出来」用这个。
相关工具
文本随机打乱
文本把文本随机打乱:按行、按字或按词重排,词间间隔与首尾缩进留在原位。纯本地运算,点一次换一批。
随机数生成
生成器生成随机整数或小数:范围、个数、小数位数可调,还能去重、排序、按二/八/十六进制输出。随机源取自浏览器的加密随机数。
文本清洗
文本清洗从日志或表格里复制出来的一列内容:去重行、排序、去空行、去首尾空白、去行号、合并多空格,规则逐条开关。粘贴的内容只在本机处理。
文本对比
文本把两份文本逐行对比,高亮标出新增、删除与未改动的行,改动按最小差异对齐,而不是整段标成变了。全部在浏览器本地完成,内容不上传。
字数统计
文本中英混排的文本到底有多长?中文按字、英文按词分开统计,给出字符数、行数、字节数、阅读与朗读时长,以及会被切成几条短信。全部在本机完成。
命名风格转换
文本在十四种命名风格之间转换标识符,拆词时认得 fooBarBaz 与 FOO_BAR 这类混写,连续大写也会按词拆开。全部在浏览器本地完成,不上传。