Algorithm 从列表中的元素创建所有可能的对,然后对它们进行均匀排序
所以我有3到8名球员,我希望每个人都能和其他人1对1比赛。 每次按顺序进行一次匹配。 一对中的顺序并不重要(a对b==b对a) 我在一个简单的嵌套循环中创建匹配对,在这个循环中我循环玩家并将当前索引与以下所有索引配对 问题是,玩家1将玩他的所有比赛,然后没有什么事可做,而玩家8将不得不等待 有没有办法平均分配这对球员,让所有球员都有相同的休息时间Algorithm 从列表中的元素创建所有可能的对,然后对它们进行均匀排序,algorithm,sorting,matching,Algorithm,Sorting,Matching,所以我有3到8名球员,我希望每个人都能和其他人1对1比赛。 每次按顺序进行一次匹配。 一对中的顺序并不重要(a对b==b对a) 我在一个简单的嵌套循环中创建匹配对,在这个循环中我循环玩家并将当前索引与以下所有索引配对 问题是,玩家1将玩他的所有比赛,然后没有什么事可做,而玩家8将不得不等待 有没有办法平均分配这对球员,让所有球员都有相同的休息时间 我目前正在对包含配对的数组进行随机化,但我正在寻找更好的方法。将配对按顺序保存在数组中,然后像这样洗牌 function shuffle(a) { f
我目前正在对包含配对的数组进行随机化,但我正在寻找更好的方法。将配对按顺序保存在数组中,然后像这样洗牌
function shuffle(a) {
for (let i = a.length; i; i--) {
let j = Math.floor(Math.random() * i);
[a[i - 1], a[j]] = [a[j], a[i - 1]];
}
}
然后像这样使用它
var myArray = ['1','2','3','4','5','6','7','8','9'];
shuffle(myArray);
摘自您可以使用
“圆”方法是为项目创建明细表的标准算法
循环赛。所有参赛者都分配了号码,并且
然后在第一轮配对:
第一轮。(1局14分,2局13分,…)
然后修复表的第一列或最后一列中的一个参与者(本例中为第一列),然后
将其他部件顺时针旋转一个位置
第二轮。(1局13分,14局12分,…)
第三轮。(第1局第12局,第13局第11局,…)
直到你几乎回到最初的位置
第13轮。(1场比赛2,3场比赛14,…)
@很抱歉,我在第一段中添加了进一步的解释。从问题中可以看出:“我目前正在对包含对的数组进行随机化,但我正在寻找更好的方法。”
1 2 3 4 5 6 7
14 13 12 11 10 9 8
1 14 2 3 4 5 6
13 12 11 10 9 8 7
1 13 14 2 3 4 5
12 11 10 9 8 7 6
1 3 4 5 6 7 8
2 14 13 12 11 10 9