AZ Tools

循环赛配对调度器 (锦标赛与 1对1 轮换)

随机

当 N 人需要跨多轮配对时 — 代码评审搭档、辩论锦标赛、对练伙伴、1对1 导师轮换、黑客松破冰、棋类联赛 — 问题都一样: 如何用最少轮数保证每个人都与每个人恰好相遇一次? 答案是循环赛, 经典构造法是圆圈法: 固定一位参与者, 其他人围绕他/她旋转, 沿直径读取配对。对偶数 N 人, 这会产生 N-1 轮, 每轮 N/2 个同时进行的配对, 完全覆盖所有 N(N-1)/2 个唯一配对, 各一次。N 为奇数时, 添加一个虚拟 Bye 位让某人每轮轮休。本工具直接执行该构造: 粘贴名字, 即得一张按轮次的表格和按参与者的视图。初始顺序可选字母序 (可复现) 或带种子的随机 (重抽看不同布局)。一切都在你的浏览器中, 不外发。

顺序:
视图:
参与者数
6
轮数
5
配对总数
15
轮次 1
  • 对局 1EveDave
  • 对局 2BobAlice
  • 对局 3FrankCarol
轮次 2
  • 对局 1EveAlice
  • 对局 2DaveCarol
  • 对局 3BobFrank
轮次 3
  • 对局 1EveCarol
  • 对局 2AliceFrank
  • 对局 3DaveBob
轮次 4
  • 对局 1EveFrank
  • 对局 2CarolBob
  • 对局 3AliceDave
轮次 5
  • 对局 1EveBob
  • 对局 2FrankDave
  • 对局 3CarolAlice
赛程是如何构造的

经典圆圈法: 固定一位, 其余顺时针旋转, 沿直径成对。N (偶数) 参与者产生 N-1 轮 × N/2 场对局, 全 C(N,2) 个唯一配对各一次。计算完全本地 — 参与者姓名不会离开你的浏览器。

使用方法

  1. 粘贴参与者姓名 — 每行一个或逗号分隔。
  2. 选择字母序 (可复现) 或随机 (带种子 — 重抽看新布局)。
  3. 在「按轮次」 与 「按参与者」 视图间切换。
  4. 奇数人数会获得一个 (Bye) 位 — 该人休息一轮。
  5. 使用「复制为 Markdown」 将完整赛程粘到文档或 PR 描述中。

常见问题

圆圈法是什么?
将 N 位参与者排成圆圈。固定参与者 1。每一轮沿直径画弦取对: (1,N)、(2,N-1)、(3,N-2)…。然后除参与者 1 外, 所有人顺时针旋转一位, 重复。N-1 轮后, 每对都恰好相遇一次。这是锦标赛调度与图论中的标准构造 (完全图 Kn 分解为完美匹配)。
如何处理奇数人数?
N 为奇数时不存在完美匹配 — 每轮必须有人轮休。工具添加虚拟 '(Bye)' 位将人数变为偶数, 然后跑标准圆圈法。N 轮中, 每位真实参与者恰好得到一次 bye。Bye 公平轮转 — 不会出现某人休息两次而另一人从不休息的情况。
和你的 Group Maker / Secret Santa 工具有何不同?
Group Maker 一次将 N 人切分为 K 个 disjoint 小组 — 适用于分组讨论或选队。Secret Santa 构建单次循环送礼 (A→B→C→A)。Round-Robin Scheduler 构建跨时间的整张对阵图 — N-1 轮, 每轮都是完美匹配, 全 C(N,2) 个无序配对各覆盖一次。需要「轮换」 而非「一次性分配」 时用这个。
之后能再现某个特定赛程吗?
可以。随机顺序带种子 — 种子存于可分享 URL 的状态中, 重新加载工具即重现同一布局。如需完全确定性输出, 切换到字母序; 相同输入永远产出相同赛程。

相关工具