使用方法
分组名字生成器把「随机分人」和「给组取名」合成一步,操作四步:
- 在「名单」框里每行贴一个名字,示例已预填 10 个人,可以直接改。
- 「分成几组」填 2 到 12,演示值 3;组数不能超过名单行数。
- 「词库风格」选电竞、奇幻、科幻或通用,只影响组名用词,不影响分组结果。
- 点「随机分组」,结果区给出每组组名、人数与成员;点「复制结果」整段拿走,或导出 CSV 留档。
想换一批就再点一次「随机分组」;名单框里按 Ctrl / Cmd + Enter 也能触发分组。
分组名字生成器能解决什么
它解决「人多、要公平分组、还得给组起名」这类重复劳动,典型场景有三种:
- 团建与拓展:10 人分 3 组,随机后不会出现「熟人抱团」,组名直接拿去贴在队旗上。
- 课堂小组:把学号名单粘进来,按 4 组切分,组名统一风格便于点名与计分。
- 抽签与比赛:赛前分组用随机洗牌保证公平,导出 CSV 可留档备查。
它与纯「队名生成器」的分工是:那个只出名字不管人,本页把人分好再顺手命名,适合需要「人 + 组名」一起交付的场合。
原理和变量
① 用了哪个算法:洗牌用 Fisher-Yates——从末位往前扫,每次在 [0, i] 里取随机下标 j,交换第 i 与第 j 项。姓名分隔用 split(/\r?\n/),再做 trim 过滤空行。
② 为什么不用 sort 随机排序:arr.sort(function () { return Math.random() - 0.5; }) 看似方便,但比较函数对同一对元素可能给出互相矛盾的结论,违反了排序算法的一致性假设。V8 用的 TimSort 在这种输入下会产生明显偏斜:原列表中间的元素更容易被留在中间。Fisher-Yates 每个下标只抽一次,n 个元素正好对应 n! 种等概率排列。
③ 组数怎么分配人数:设人数 n、组数 g,先算 base = Math.floor(n / g) 与 rem = n % g;前 rem 组各拿 base + 1 人,其余组拿 base 人。10 人分 3 组就是 base = 3、rem = 1,得到 4 / 3 / 3。
④ 输入怎么变成输出:10 人名单洗牌后按 4 / 3 / 3 切开;每组再各抽一次前缀与核心,拼成组名,例如「暗影」+「之刃」得到 暗影之刃。抽词用 Math.floor(Math.random() * 词库长度)。
⑤ 边界与阈值:名单为空、组数小于 2、组数大于人数三种情况都会点名报错,不会静默返回空结果;名单里重复的名字按行计数,同名两人会被分到不同组;一行里前后空格会被裁掉。
⑥ 常见误用的正确解释:一是以为「分组」会把同名的人合并——不会,按行处理;二是以为换个风格会保留上一批分组——不会,换风格只换词库,需要重新点分组;三是把组数填成 1,那等于没分组,页面会直接拦下。
完整示例
演示输入:名单 10 人(张三、李四、王五、赵六、钱七、孙八、周九、吴十、郑一、王二),分成 3 组,风格电竞。
- 洗牌后按 4 / 3 / 3 切开:第一组 4 人、第二组 3 人、第三组 3 人,合计 10 人不多不少
- 三组组名各由「前缀 + 核心」独立抽取,可能得到「暗影之刃」「雷霆战旗」「寒霜军团」这类组合
- 再点一次「随机分组」,人员与组名都会变;同一批人连点两次得到相同分组的概率约为 1 ÷ 4200
队列里共 6 个前缀 × 6 个核心 = 36 种组合,够 12 组以内不重名;真要重名也只是观感问题,不影响分组公平性。
输入范围与对照表
下表列出四种风格的组名组合示例,每行都是一个完整组名,可用来对照生成结果的语言风格:
| 组名 | 风格 | 来源 |
|---|---|---|
| 暗影之刃 | 电竞 | 前缀「暗影」× 核心「之刃」 |
| 雷霆战旗 | 电竞 | 前缀「雷霆」× 核心「战旗」 |
| 寒霜军团 | 电竞 | 前缀「寒霜」× 核心「军团」 |
| 苍穹守望 | 奇幻 | 前缀「苍穹」× 核心「守望」 |
| 破晓游侠 | 奇幻 | 前缀「破晓」× 核心「游侠」 |
| 秘银议会 | 奇幻 | 前缀「秘银」× 核心「议会」 |
| 量子舰队 | 科幻 | 前缀「量子」× 核心「舰队」 |
| 曲率协议 | 科幻 | 前缀「曲率」× 核心「协议」 |
| 深空矩阵 | 科幻 | 前缀「深空」× 核心「矩阵」 |
| 红星小组 | 通用 | 前缀「红星」× 核心「小组」 |
| 长风战队 | 通用 | 前缀「长风」× 核心「战队」 |
| 白露行动组 | 通用 | 前缀「白露」× 核心「行动组」 |
输入范围:名单 2 到 200 行,每行最长 30 个字符;组数 2 到 12,且不得大于名单行数。风格只有四档,不做自定义词库。
结果边界和舍入
三条边界说明:
- 真正做到均分:人数除不尽时余数只让前几组多 1 人,绝不出现「一组 5 人一组 1 人」这种分配。10 人 3 组固定是 4 / 3 / 3。
- 随机但可复现:本页用的是
Math.random,刷新页面不会保留上一批结果;需要复现请用结果区的「复制结果」或「导出 CSV」留档。 - 组名不保证唯一:36 种组合里随机抽 12 次以内基本不撞,但页面不做去重强制,组名重复不影响分组结果。
常见问题
组数能超过人数吗?
不能。组数必须小于等于名单行数,超过会直接报错,避免出现空组。
为什么分组每次都不一样?
页面用的是浏览器随机数,每次点击都会重新洗牌。想留档请点「复制结果」或「导出 CSV」。
同名的人会被分到一起吗?
按行处理,同名但不同行的两人会被当作两个独立成员参与洗牌,可能分到同一组也可能分开。
组名会重复吗?
词库共 36 种组合,12 组以内基本不会撞名;页面不做强制去重,重复只是观感问题。
能自定义词库吗?
本页不提供自定义词库。需要自己的叫法,可复制结果后在文本编辑器里统一替换。
名单里的空行怎么处理?
空行与你输入的前后空格都会被自动裁掉,不会产生「空组员」。
分组是随机的还是轮流的?
完全随机,用 Fisher-Yates 洗牌保证每种排列等概率,不是按顺序轮流分配。
数据会上传吗?
不会。名单与分组结果全部在浏览器本地处理,不联网、不上传。