Tag, ich bin mir nicht sicher wie ich den Titel nennen soll, naja mal sehn.
Also, ich habe folgendes Problem:
Ich habe ein Array mit 20 Werten (Namen) jetzt will ich das 5x eine Konstellation von 4 Namen durch Zufall ausgewählt und ausgegeben wird.
Hintergrund ist hier ein Sport- Wettkampf:
Es gibt 20 Personen es spielen immer 2 gegen 2 und nach jeder Runde sollen alle Leute durcheinandergeworfen werden so dass möglichst nie 2 gleiche Leute zusammen oder gegeneinander spielen.
Es gibt 5 Runden und in jeder Runde 6 Spielfelder, also 6 x 4 Personen die bestimmt werden müssen.
Zu einfachheithalber habe ich keine Namen sondern erstmal nummern ins Array geschrieben, hier ist mein Ansatz:
Es läuft 5x die Schleife durch in der jeweils 4 Personen ausgewählt werden und das wird ausgegeben.
for(int j = 0;j<5;++j){
for(int i = 0;i<2;++i){
zufall = (rand() % 20) +1;
cout << namen[zufall] << endl;
}
cout << "spielen gegen: " << endl;
for(int i = 0;i<2;++i){
zufall = (rand() % 20) +1;
cout << namen[zufall] << endl;
}
cout << "-----" << endl;
}
Das Problem dabei ist folgendes: Ich weis nicht so recht wie ich verhindern soll das Personen doppelt genommen werden, die Idee war alle gewählten Zahlen in ein Array zu schreiben wo jedesmal bei der Zufalls Zahl abgeglichen wird ob diese bereits verwendet wurde.
Das würde das Problem für 1 Runde lösen.
Wie ich es aber hinbekommen kann das in der 2ten Runde nicht die selben gegeneinander spielen hab ich keine Ahnung, irgendwie müsste man die Zahlenpaare irgenwo aufschreiben und immer abgleichen.
Vielleicht hat jemand von euch einen Tipp.
Danke