Zweipaare aus Liste generieren ohne Dopplung aus vorherigem Durchlauf

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hallo,

ich denke ich bin nicht der erste, der vor dieser Aufgabe steht.

Es gibt ein Treffen von Teilnehmer wo sie zufällig in Zweierteams eingeteilt werden. Es soll jedes mal aufs Neue so sein, dass sich nicht immer die selben zusammenfinden. Da ich das in Django baue, gibt es eine DB, wo ich beispielsweise jedem User aus einem Zweierteam für ein bestimmtes Treffen eine match_id gebe. Damit könnte ich also kontrollieren, ob sich Teilnehmer schon einmal getroffen haben oder nicht.

Gibt es dafür irgendetwas Fertiges? Algorithmus?

LG
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Es gibt ein Treffen von Teilnehmer wo sie zufällig in Zweierteams eingeteilt werden. Es soll jedes mal aufs Neue so sein, dass sich nicht immer die selben zusammenfinden
Damit könnte ich also kontrollieren, ob sich Teilnehmer schon einmal getroffen haben oder nicht.
Das ist in Teilen ein Widerspruch in sich. "Zufall" bedeutet ja _nicht_, dass sich z.B. heute und morgen auf keine Fall die selben Leute treffen. Zufall bedeute hier eher, dass sich bei hinreichend großer Anzahl von Treffen statistisch gesehen alle 2er-Gruppen gleich oft treffen.

Wenn jeder jeden genau einmal getroffen haben soll, bevor ein 2. Treffen stattfindet, dann musst du das anders machen. Also z.B. dir mit dem `collections` Modul die Paarungen voher berechnen lassen. Was natürlich voraussetzt, dass die Anzahl der Teilnehmer fix ist.

Wenn es um so Aufteilungen im allgemeinen geht (z.B. bei der Versuchsplanung), dann sind die mathemathischen Stichworte "lateinisches Quadrat" bzw. "orthogonale lateinische Quadrate", "lateinisch-griechisches Quadrat" und "Euler-Quadrat".

Gruß, noisefloor
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Danke noisefloor. Also du hast natürlich Recht mit deiner Analyse. Ich hole nochmal ein bisschen weiter aus:

Also die Teilnehmerliste steht vor der Einteilung fix fest. Die Paare sollen so gewählt werden, dass möglichst noch nicht gepaarte Teilnehmer aufeinander treffen. Wenn es nicht anders geht, dann treffen sie sich zum 2. mal.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Antworten