随机分组
免费在线随机分组:粘贴名单,指定组数或每组人数,一键公平分组;可让男女均匀分到各组、自动选组长,结果可复制或用分享链接发到群里。无需注册,名单不会上传。
- 指定组数或每组人数
- 男女均衡分配
- 自动选组长
- 分享链接公布
在名字后面加括号写标签,例如“小明(男)”“小红(女)”。各组每种标签的人数最多差 1 人;没写标签的人也会均匀分散。
在组长名字前加 *,例如“*小明”。指定的组长会分在不同组;没有指定组长的组由程序随机选一位。
分组结果
点组名可以直接修改,复制结果和分享链接会使用新的组名。
🔒 所有计算都在你的浏览器内完成,数据不会上传到任何服务器。
什么时候会用到
- 课堂分组:把全班名单粘贴进来,指定分成 6 组,勾选按标签均衡分配,让每组男女人数差不多,点一下就分好,不用再做抽签纸条。
- 团建破冰、年会游戏:报名名单直接粘贴,用“指定每组人数”分成 5 人小队,再把分享链接发到微信群公布。
- 球队分队:每次来打球的人数不固定,指定分 2 队或 3 队,各队最多差 1 人;给主力队员标上同一个标签,就会均匀分到各队。
- 读书会、小组作业:让每组随机选一位组长,或在名字前加 * 指定组长,组长一定分在不同组,每组都有人牵头讨论。
使用说明
- 在名单框里粘贴所有人,可以用换行、逗号、顿号或空格分隔;点“整理格式”会排成一行一个。
- 选择“指定组数”或“指定每组人数”并输入数字,下方会实时显示每组几人。
- 需要时勾选“按标签均衡分配(如男女)”并在名字后加括号标签,或在“组长”里选择组长的产生方式。
- 点“👥 开始分组”,结果以卡片显示;点组名可以改名,不满意就点“重新分组”。
- 点“复制结果”粘贴到群里,或点“复制分享链接”,大家打开就能看到同一份分组。
实际示例
23 人、每组 4 人:23 ÷ 4 = 5 组余 3 人,多出来的 3 人平均加到其中 3 组,结果是 3 组 5 人、2 组 4 人,不会出现一组只有 3 人。改成指定分 6 组的话,则是 5 组 4 人、1 组 3 人。
30 名学生(16 男、14 女)分 6 组并勾选按标签均衡分配:每组 5 人。男生 16 ÷ 6 = 2 余 4,所以 4 组有 3 名男生、2 组有 2 名;女生 14 ÷ 6 = 2 余 2,正好补进只有 2 名男生的那 2 组。实际结果是 4 组“男 3・女 2”、2 组“男 2・女 3”。
12 人分 5 组,并在小明、小红、小刚、大伟的名字前加 *(指定组长):各组人数是 3、3、2、2、2,4 位组长各在不同组,没有指定组长的那一组由程序从组员中随机选一位。
名单“小明、小红、小明、小丽”里有两个小明,分组时会变成“小明#1、小红、小明#2、小丽”:两人都保留并加上编号,结果里才分得清谁是谁。
结果怎么看
- 设置区下方的预览(例如“23 人 → 5 组:3 组 5 人、2 组 4 人”)就是实际会分出的各组人数,点分组之前可以先确认。
- 哪几组多 1 人是随机决定的,不会固定是第 1 组。组长固定排在每组第一位,并标上“组长”。
- 每次“重新分组”都是全新的随机结果,与上一次无关。4 个人分 2 组时,任意两人同组的概率是 1/3,连续两次同组并不稀奇。
- 勾选按标签均衡分配时,每张卡片会显示该组的标签人数(例如“男 3・女 2”),一眼就能确认是否均衡;没写标签的人算作“未标记”一类,也会均匀分散。
原理与计算方法
- 随机数来源:浏览器的 crypto.getRandomValues(密码学安全随机数),并用拒绝采样避免取模偏差,与本站“在线抽签抽奖”用的是同一套方法。
- 组数:指定组数时直接使用;指定每组人数 s 时,组数 = floor(人数 ÷ s),多出的人逐个加到各组。n 人分 k 组时,有 n mod k 组是 floor(n ÷ k) + 1 人,其余是 floor(n ÷ k) 人,所以各组最多差 1 人。
- 洗牌:名单先用 Fisher–Yates 洗牌(从最后一个开始,与前面随机一个位置交换),每种排列的概率都相同,再按名额依次放进各组,最后把组的顺序也打乱。
- 标签均衡:某个标签有 c 人时,每组分到 floor(c ÷ k) 人,其中 c mod k 组多 1 人。选哪几组多 1 人,既要让各组总人数最多差 1,又要让指定的组长各在不同组,程序把它看作“标签 → 组”的最大流问题,用 Dinic 算法求出可行的分配。
- 重名处理:名字完全相同的人全部保留,按出现顺序加上 #1、#2…;加编号后如果和名单里已有的名字重复,就顺延到下一个编号。
适用限制
- 标签必须完全一致才算同一类:“男”“男生”“M”会被当成三种标签,请统一写法。每人只能有一个标签,无法同时均衡两种条件(例如性别和年级)。
- 不会参考以往的分组记录,无法保证这次和上次的组员不同,也不能指定“某两人必须同组或不同组”。
- 分享链接是当前结果的快照,链接里包含所有名字,拿到链接的人都能看到;名单很长时链接也会很长,部分聊天软件可能会截断。
- 结果不会自动保存,刷新页面就会消失;需要保留时请复制结果或生成分享链接。
常见问题
分组结果公平吗?
公平。使用浏览器内置的密码学安全随机数(crypto.getRandomValues)和 Fisher–Yates 洗牌,在不设标签和指定组长时,每一种分法出现的概率都相同,没有人能预测或操控结果。
人数除不尽时怎么分?
各组人数最多差 1 人。选“指定每组人数”时,多出来的人会平均加到各组,而不是单独凑成一个人很少的组,例如 10 人、每组 4 人会分成 2 组各 5 人。
名单里有重名的人怎么办?
两个人都会保留,并按出现顺序加上 #1、#2 区分,名单下方也会提示。如果其实是同一个人重复输入,请删掉多余的那条。
名单会被上传或保存吗?
不会。分组全部在你的浏览器里完成,关闭或刷新页面就会消失。分享链接的内容放在网址 # 后面,不会发送到服务器,只有拿到链接的人能看到。
怎么让男女均匀分到每一组?
勾选“按标签均衡分配(如男女)”,并在名字后面加括号写上性别,例如“小明(男)”“小红(女)”。分组后各组的男生、女生人数最多差 1 人,卡片上也会显示各组的人数统计。
可以指定谁当组长吗?
可以。“组长”选“指定组长(名字前加 *)”,再在名单里把组长写成“*小明”。指定的组长会分在不同组,人数不能多于组数;没有指定组长的组会随机选一位。
分好的组可以投屏或发到微信群公布吗?
可以。点“复制结果”会得到一组一行的纯文本,直接粘贴到微信群或通知里;点“复制分享链接”发出去,大家打开就能看到同一份分组,也适合投屏给全班看。
参考来源
- Crypto: getRandomValues() method — MDN Web Docs
- Fisher–Yates shuffle — Wikipedia
- Maximum flow problem — Wikipedia