JavaScriptsVerschiedenes

Gruppen einteilen

Verteilt eine Namensliste zufällig und gleichmäßig auf Mannschaften — nach Anzahl der Gruppen oder nach Gruppengröße.

Mannschaften bilden, Arbeitsgruppen einteilen, Tische besetzen: Immer dieselbe Aufgabe, und immer dieselbe Diskussion darüber, wer zu wem kommt. Dieses Script würfelt die Einteilung — schnell, gleichmäßig und ohne Ansehen der Person.

Ihr könnt auf zwei Arten vorgeben, wie eingeteilt wird. Entweder ihr nennt die Anzahl der Gruppen — dann werden die Namen möglichst gleichmäßig darauf verteilt. Oder ihr nennt die gewünschte Gruppengröße — dann ergibt sich die Anzahl aus der Teilnehmerzahl. Beides führt selten glatt auf, und genau da wird es interessant: Bei 23 Personen in 4 Gruppen bekommen drei Gruppen sechs Mitglieder und eine fünf. Das Script verteilt den Rest reihum, statt eine Gruppe deutlich größer zu machen.

Bei jedem Klick auf „Einteilen" wird neu gemischt — wem das Ergebnis nicht gefällt, drückt einfach noch einmal. Die Einteilung ist echter Zufall und nimmt keine Rücksicht auf Stärke, Vorlieben oder darauf, wer letzte Woche schon zusammen war. Wer solche Regeln braucht, teilt am besten zuerst von Hand grob vor und lässt nur innerhalb der Vorgruppen würfeln.

Verwandtes im Archiv: Losentscheid zieht Gewinner statt Gruppen, Zeilen sortieren mischt eine Liste ohne sie aufzuteilen, und für Zahlen statt Namen gibt es Zufallszahlen berechnen.

Verschiedenes Baujahr 2026 läuft in deinem Browser
Script von kostenlose-javascripts.de

So funktioniert das Script

Zwei Zeilen tragen das ganze Script: eine für den Zufall, eine für die gleichmäßige Verteilung. Die zweite ist ein Kniff, den man sich merken sollte.

gemischt.forEach(function (name, nummer) {
  gruppen[nummer % anzahl].push(name);
});

Das ist die Verteilung reihum, im Englischen round robin. Der erste Name kommt in Gruppe 0, der zweite in Gruppe 1, und wenn die letzte Gruppe erreicht ist, geht es wieder bei der ersten los — genau das leistet der Restwert-Operator. Bei elf Namen und drei Gruppen entstehen so Gruppen mit 4, 4 und 3 Mitgliedern.

Der naheliegende andere Weg wäre, die gemischte Liste in Blöcke zu schneiden: die ersten vier in Gruppe 1, die nächsten vier in Gruppe 2, den Rest in Gruppe 3. Das ergibt dieselben Größen, ist aber anfälliger — man muss die Blockgröße vorher ausrechnen und den Rest gesondert behandeln. Die Verteilung reihum kommt ohne diese Rechnung aus und liefert automatisch den Unterschied von höchstens einem Platz.

const anzahl = art === "anzahl"
  ? Math.min(wert, namen.length)
  : Math.ceil(namen.length / wert);

Hier werden die beiden Eingabearten auf denselben Wert zurückgeführt: die Anzahl der Gruppen. Bei der Vorgabe der Gruppengröße wird aufgerundet — bei elf Personen und Vierergruppen ergibt 11 / 4 = 2,75, aufgerundet 3. Mit Abrunden blieben drei Personen ohne Gruppe. Und Math.min verhindert leere Gruppen, wenn jemand mehr Gruppen als Teilnehmer verlangt.

return "Gruppe " + String.fromCharCode(65 + (nummer % 26));

Für die Buchstabennamen wird zur Zeichennummer des großen A gerechnet: 65 ist A, 66 ist B. Das % 26 fängt den unwahrscheinlichen Fall von mehr als 26 Gruppen ab — dann beginnt die Benennung wieder bei A, was zwar nicht schön ist, aber besser als Sonderzeichen aus dem Zeichensatz.

const kleinste = Math.min.apply(null, groessen);

Math.min erwartet einzelne Zahlen, keine Liste. apply ruft die Funktion auf und breitet dabei das Array zu einzelnen Argumenten aus. Modern schriebe man Math.min(...groessen); die apply-Form ist gleichwertig und läuft auch in älteren Browsern.

Zum Anpassen: Sollen bestimmte Personen zusammen oder getrennt bleiben, teilt man die Liste vorher auf und würfelt innerhalb der Teile — etwa erst alle Erfahrenen reihum verteilen, dann alle Neuen. So bleiben die Gruppen ausgewogen, ohne dass der Zufall ganz verschwindet. Für Gruppen mit festen Rollen könnt ihr das erste Mitglied jeder Gruppe zum Sprecher erklären; die Reihenfolge ist ja bereits zufällig.

Script für die eigene Homepage

Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.

Mehr aus der Kategorie Verschiedenes