打开就能用的在线抽签器,一份名单做三件事:抽 N 个(可开「抽过的不再抽」,结果逐个翻出,等不及可以跳过)、随机分组(按「分成 N 组」或「每组 N 人」,人数分不平时余数均摊到前几组)、排顺序(整份名单随机排成 1、2、3……)。名单一行一个名字,自动去空去重,最多 500 个,只存在你自己的浏览器里。取数用浏览器自带的加密级随机源配拒绝取样与 Fisher–Yates 洗牌,每个人机会均等;每次结果都带「第 N 次」与时间,当众抽也说得清。
怎么用
页面分成两块:上面是名单,下面是三个页签。名单只填一次,三个页签共用它。
先填名单
把名字写进大框里,一行一个,也认逗号、顿号、分号、制表符分隔——从表格软件里复制一列名字直接粘进来就行。页面会自动做三件事:
- 去掉空行和前后空格,不用管粘贴时带进来的空白;
- 完全相同的名字只算一个,并在下面提示你重复的是哪几个(同名同姓的两个人要都参与,记得写成「张伟 A」「张伟 B」这样区分开);
- 最多 500 个,多出来的会被截掉并明确提示,不会偷偷少算人。
名单下面一行读数写着现在有多少个名字、已经抽走几个、还剩几个。名单和「已经抽走的人」存在你自己浏览器的本地存储里(键名 hi8-chouqian-list),刷新页面能接着用;点「清空名单」会先问一次,确认后连本机存的那份一起删掉。第一次打开时框里是一份示例名单,直接改成你自己的即可。
一、抽 N 个
填好「抽几个」,点「抽取」。结果每 400 毫秒翻出一个,一个一个蹦出来是为了当众念名字时有节奏;等不及就点「跳过」,剩下的立刻全部显示。只抽一个时结果会放成大字,隔着半个教室也看得清。
- 抽过的不再抽(默认开着):抽走的人从下一轮候选里去掉,适合一轮一个地点名、排值日、分发任务。关掉它就变成「每轮都从全体名单里抽」。
- 重置:把「已经抽走」的记录清空,所有人回到候选里,名单文字保留。
- 复制:把这一轮抽到的人复制走,人少时按顿号连成一行,超过 12 个时按换行排成一列。
二、随机分组
选口径再点「分组」:
- 分成 N 组:把全部人平分成 N 组;
- 每组 N 人:先按每组人数算出要分几组,再把人数摊平。
两种口径都遵守同一条规则:人数分不平时,余数均摊到前面几组,任意两组的人数差不会超过 1。结果一组一张卡片,卡片标题写着这组有几个人。点「再分一次」换一种分法(重新洗一遍牌,不是把上一次挪两个人);点「复制全部」把结果按制表符排成并排的几列,贴进表格软件就是现成的分组表。
三、排顺序
点「排顺序」,整份名单会被随机排成 1、2、3……答辩、面试、出场、值日、轮流发言,用的都是这一件事。点「再排一次」重来一份,点「复制」得到「序号+制表符+名字」的一列文本。
每次结果都有编号和时间
三个页签的结果上方都有一行「第 N 次 · 时分秒」,页面底部还有一个折叠的记录区,留着这次打开页面之后的每一次结果(最近 10 条)。它只留在页面里,刷新就没了——它的用处是当众公示:重抽过一次,编号会跳,赖不掉。
怎么看结果
「抽过的不再抽」是两种完全不同的概率模型
这是抽签最容易吵起来的地方,其实只是两种模型的差别:
- 开着(不放回):每抽走一个,下一轮的候选就少一个。10 个人抽完 10 轮,每人正好被抽中一次,顺序是随机的。这才是「点名」「排值日」要的。
- 关着(有放回):每一轮都从全体名单里抽,互相独立。10 个人抽 10 轮,平均下来会有 3 个人一次都没被抽到,同时有人被抽到两三次——这不是程序坏了,而是有放回抽样本来的样子。
所以决定用哪一种,先问自己一句:这一轮抽中的人,还该不该参与下一轮?
连着抽到同一个人,通常不是「不随机」
10 个人里有放回地抽 5 次,至少出现一次重复的概率接近七成。真正的随机序列里,扎堆和连号本来就很常见;反而是「每个人轮着来、一个不落」那种结果,才是被人为安排过的样子。人脑对随机的直觉天生偏向「太整齐」,这一点在心理学里被反复验证过。
分组结果怎么核
三条就能核完:人数总和对不对、有没有人重复出现在两组、组与组人数差是不是不超过 1。这一页的分组是「把整份名单洗一遍牌,再顺着切开」,所以前两条天然成立,第三条由余数均摊保证。
顺带一提:如果你要的是「男女搭配」「强弱搭配」这种带条件的分组,纯随机做不到——常见办法是先按条件分成两份名单,各自分组再两两合并。这一页不内置条件分组,因为一旦掺进条件,「随机」就不再是那个所有人都能一眼看懂的随机了。
排顺序之后别再排序
拿到随机顺序之后,千万别顺手按姓名或工号再排一次——那样随机性就白做了。要留档就直接复制那份带序号的列表。
怎么让结果站得住
抽签的公平性一半在算法,一半在流程:
- 名单当众确认:空行、重复名被合并的提示都在名单下面,先看一眼;
- 规则先说:抽几个、开不开「抽过的不再抽」、抽中的算不算数;
- 过程可见:把屏幕投出来,结果上方的「第 N 次 · 时分秒」和底部的记录区会替你作证;
- 不满意也别重抽:重抽一次并不会让谁更容易被抽中,只会让所有人不再相信这个流程。
常见问题
名单最多能放多少人?从表格里复制一列进来行不行?
最多 500 个。从表格软件里复制一列名字直接粘进来就行——换行会被识别成分隔,前后空格自动去掉。要是你粘进来的是一行用逗号隔开的名字,也一样认。超过 500 个时页面会截断并明确写出截掉了多少,不会让你以为全员都在里面。
刷新页面,名单和「已经抽走的人」会丢吗?
不会。两样都存在你这台设备的浏览器本地存储里(键名 hi8-chouqian-list),刷新或者关掉再打开都能接着抽。它不会同步到别的设备,也不会被页面发到任何地方;清掉浏览器数据或者点「清空名单」就没了。另外,页面底部那份「这次打开之后的记录」是有意不落盘的——它只对当场那一次公示负责。
手机上能用吗?
能。名单框、三个页签和分组卡片在 400 像素宽的屏幕上都完整可见,卡片会自动折成更窄的几列。抽人时把手机递着给大家看也够用,只抽一个的时候结果是大字。数字框设了数字输入模式,正常会直接弹数字键盘。
分组结果怎么贴进表格软件?
点「复制全部」,页面给的是制表符分隔的文本:第一行是「第 1 组、第 2 组……」,下面每一行是各组的一个人,短的那一列自动补空。粘进表格软件会直接铺成并排的几列,不用再手动分列。有些浏览器不允许网页直接写剪贴板,这时页面会把文本放进一个小框并选中,你自己按 Ctrl+C(Mac 上是 ⌘+C)即可。
能不能给某些人更高的被抽中概率?
这一页不做权重,每个人的机会完全相同——这是它作为公示工具的前提。真要加权重,最老实的办法是在名单里把那个人多写几次(不过这一页会把完全相同的名字合并成一个,所以得写成「张三 1」「张三 2」这类可区分的写法);如果你要的是看得见的加权过程,站内的随机转盘支持在选项后面写 *3 来分配扇区角度,更适合当众解释。
它和「抓阄」比,有什么不一样?
结果的性质一样,都是等概率抽取;差别在于过程可不可信、可不可复核。纸团抓阄的公平性取决于折得一样不一样、有没有人摸到边角,出了争议没法复盘;网页抽签的随机源和流程是固定的,还给你留了一行「第 N 次 · 时分秒」。当然,真正把事情说清楚的永远是「规则先定、名单先确认」,工具只负责后半程。
原理与冷知识
-
随机源用的是浏览器的加密级随机数。 页面优先调用
crypto.getRandomValues,它背后是操作系统的随机数池,材料来自硬件噪声、时钟抖动、中断时序,设计目标是「看过去的输出也推不出下一个」;浏览器不给(比如被禁用)才退回Math.random,页面下方的说明会写明当前用的是哪一种。 -
取模偏差是这类工具最常见的隐蔽 bug。 把一个 32 位随机整数直接「对人数取余」看着没问题,但 2³² 通常不能被人数整除,排在前面的几个人会多分到一份机会。人越多、越接近取样空间,偏差越明显。这一页用的是拒绝取样:把取样空间按人数切成整份,落在末尾零头里的取样直接丢掉重取,代价只是偶尔多取一次,换来每个人完全等机会。
-
洗牌有正确写法和错误写法。 分组与排顺序用的是 Fisher–Yates 洗牌:从最后一个位置起,每次和它前面(含自己)的随机一个位置交换。写成「每次和任意位置交换」看着更自然,分布却是歪的——这是流传极广的经典错误,历史上有过在线洗牌因此被证明偏向某些结果的案例。这套方法得名于费希尔与耶茨 1938 年为随机抽样写的那本随机数表手册,1964 年由 Durstenfeld 改成今天这种只走一遍数组的现代写法。
-
抽签选人不是今天才有的。 古雅典用一种叫 kleroterion 的石板抽签器来选陪审员和多数公职:把身份牌插进石板的格子里,再靠放球决定哪几排中选,目的是让权力不被演说和人脉左右。用抽签而不是投票来分配职位,在当时被认为是更民主的做法。
-
今天抽签仍然在决定不少大事。 体育赛事的分组、司法程序里的陪审员遴选、学位房与摇号、开源社区的值班轮换,用的都是同一套「等概率、过程可见」的逻辑。它们的共同点不是算法多高明,而是流程公开:谁在名单里、抽几次、什么时候抽,事先都写清楚。
-
「随机」难的从来不是抽,而是让人信。 一个只花几毫秒的洗牌,配上当众确认的名单、说在前面的规则、抽完就留痕的编号,才算完整。这也是这一页把「第 N 次 · 时分秒」放在结果正上方的原因。
-
500 个名字够用到什么程度? 一个年级、一家几百人的公司、一场中等规模的活动,名单基本都在这个量级以内。真要给上千人排顺序,用表格软件配随机数列排序更顺手;要的是数字而不是名字,就去随机数生成器。