piapia123
zh

随机点名与抽取

文本

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把名单一行一个粘进来,随机抽出几个。 随机源用的是 `crypto.getRandomValues`,不是 `Math.random`。 抽奖这件事上「能不能被预测」是实打实的问题:`Math.random` 在部分引擎上是一段能被反推的伪随机序列,观察到足够多的结果就能算出下一个。而抽取本身是公平的 —— 每一个候选项被抽中的机会一样。 「不重复」默认打开,抽不满就报错。 从 5 个人里抽 10 个不重复的只能出 5 个,这时工具直接说「名单里只有 5 项」,而不是悄悄给你 5 个或者偷偷允许重复 —— 前者让你以为工具坏了,后者让「不重复」这个承诺失效。要允许重复(抽完放回去那种),把那个勾去掉。 「按名单顺序排」是给念名单准备的。 抽奖的观感本来就是随机的顺序;但抽完要按花名册念、或者要拿去和原表对照时,跳着念很别扭,勾上它就按原来那行的先后重新排一遍。 它和文本随机打乱的分工:那个给你打乱后的全部,这个给你抽中的那几个。

功能

  • 从名单里随机抽 1–200 个
  • 随机源是 `crypto.getRandomValues`,不是可预测的伪随机序列
  • 拒绝采样保证每个候选项机会均等,靠前的不会更容易被抽中
  • 默认不重复;抽不满时直接报错并说清名单里有多少项
  • 可选允许重复(抽完放回的那种)
  • 可选把抽中结果按名单原顺序重排
  • 忽略空行与每项的首尾空白,粘贴时不用先清理
  • 结果逐行可复制,每行带抽取序号

使用方法

  1. 把名单一行一个粘进输入框
  2. 填要抽几个,按需要勾上「允许重复」或「按名单顺序」
  3. 点「重新抽取」换一批,点复制取走结果

常见问题

抽奖公平吗?会不会有偏向?
公平,两个环节都处理了。随机源是操作系统提供的密码学随机数(`crypto.getRandomValues`),不对外暴露内部状态,也没法从历史结果反推下一个 —— 用 `Math.random` 做抽奖在部分引擎上是可以被预测的。取值方式用拒绝采样而不是取模:取模会让名单靠前的几个位置出现得略多一点(比如 6 个人分 256 个随机字节,前 4 个位置各多 1 个来源),差别很小但真实存在,而抽奖恰恰在乎这个。
为什么「不重复」抽不满会报错?
因为那是一个承诺。你要 10 个不重复的,我给你 5 个,你会以为工具坏了或者自己数错了;我给你 10 个里面有重复,你会以为去重没生效。两种都比报错糟 —— 报错至少告诉你「名单里只有 5 项」,你立刻知道该换名单还是该勾上「允许重复」。
和「文本随机打乱」有什么区别?
打乱给你的是打乱后的全部内容,还要自己划出前面几个,而且「这次抽中的是哪几个」没有被高亮出来。这个工具直接给抽中的那几个,带序号、可逐行复制。要做「把名单随机排序后全部给我」用打乱;要「抽三个出来」用这个。

相关工具