Wie kann man x Spieleranzahl in 2 Teams aufteilen, die jedes Mal unterschiedlich sind?

Ich habe ein mathematisches Problem in meinem JavaScript-Code. Ich muss eine bestimmte Anzahl von Spielern zufällig in zwei Teams aufteilen, damit jedes Mal, wenn Spieler erneut spielen möchten, die Teams neu gebildet werden und sie unterschiedlich sein sollten, bis alle Kombinationen gebildet sind.

Angenommen, ich habe 4 Spieler, also lauten alle Kombinationen wie folgt:
[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]

Da die Mannschaftsseite jedoch nicht zählt, gibt es nur 3 verschiedene Kombinationen:

[1,2] vs [3,4]
[1,3] vs [2,4]
[1,4] vs [2,3]

Wenn die Anzahl der gespielten Spiele die Anzahl der Kombinationen überschreitet, sollte es von vorne beginnen ... d. H. Zufällig eine der drei Kombinationen auswählen, zufällig die nächste auswählen und so weiter ...

Aber es gibt eine Wendung ... und meine mathematischen Fähigkeiten gehen ziemlich weit nach Süden, wenn die Anzahl der Spieler ungerade ist und einer der Spieler ein Spiel ausruhen muss. Bei 5 Spielern sind alle Match-Up-Kombinationen (die letzte Zahl ist der Spieler, der sich ausruht):

[1,2] vs [3,4] [5]
[1,2] vs [3,5] [4]
[1,2] vs [4,5] [3]

[1,3] vs [2,4] [5]
[1,3] vs [2,5] [4]
[1,3] vs [4,5] [2]

[1,4] vs [2,3] [5]
[1,4] vs [2,5] [3]
[1,4] vs [3,5] [2]

[1,5] vs [2,3] [4]
[1,5] vs [2,4] [3]
[1,5] vs [3,4] [2]

[2,3] vs [4,5] [1]
[2,4] vs [3,5] [1]
[2,5] vs [3,4] [1]

Wie ist es in JavaScript möglich, diese Teams zusammenzustellen?

Eine Sache, die in den Sinn kam, war, jedem Spieler einen eindeutigen Wert (10 ^ x) zu geben, z.

player1.value = 10;
player2.value = 100;
player3.value = 1000;
player4.value = 10000;

... und dann, wenn Sie sich zu Teams zusammenschließen, prüfen Sie, ob einer der Gesamtwerte des Teams mit den letzten Werten übereinstimmt.

Könnte jemand mathematisch / JavaScript-fähiger sein, bitte helfen Sie mir bei diesem Codierungsproblem. Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage