SAME SIDE  /  10 人内战分队

十个人, 两边站。

填上 ID 点一下分成两阵,不足 10 人也能分。谁临时有事,找人顶上就行 —— 其他人不动,他回来了再换回去。

填名单

一个个填或整段粘贴 · 不足 10 人就留空 0 / 10
整段粘贴也行 —— 一次贴 10 个名字自动铺满

两阵

上面填好人,点 分队 —— 不足 10 人也能分,剩下的位置留空。

01

怎么换人

替补顶替 · 随时换回

顶上来

点某个人行尾的「替换」,填一个新 ID —— 他顶上这个位置, 被顶下来的人进替补席。其他位置纹丝不动,这是临时换人,不是重新分队。

空位上的按钮是「填人」:空位不是人,补上去不会有人进替补席。

换回去

替补席上每个人后面都有「换回」:他回到自己原来的位置, 顶替过他的人下场离开。场上永远是 10 个人,不多不少。

重掷与归位

重掷只把当前场上这 10 个人重新洗一遍,替补席不动, 先选图和队长一并重抽。

有替补时,名单台的主按钮会变成「保留替补重掷」,误点也不会清空替补席。 若要从原名单重新分队,先点「全部归位」

全部归位把替补席清空,场上回到刚分队时的样子。

02

随机是怎么来的

CSPRNG · 无取模偏差

洗牌

标准 Fisher–Yates,10! 种排列等概率。随机源用 crypto.getRandomValues 并做拒绝采样,取模偏差为零。

for (i = n-1; i > 0; i--) swap(a[i], a[rand(i+1)])

验过

25 条回归用例,外加一条跑 4000 次真实分队、对每个人进 A 阵的次数做卡方检验