Entwickler-Ecke

Sonstiges (Delphi) - Zufällige Zusammenstellung von Teams ?!


Baphometschwarz - Mo 12.07.04 15:00
Titel: Zufällige Zusammenstellung von Teams ?!
Hallo,

ich brauche Hilfe bei einer Funktion, die ich in mein Programm einbinden kann, womit ich zufällig eine Zusammenstellung von verschiedenen Eingaben generieren kann.

Ich hatte vor ein Programm zur Ermittlung von Teams zu programmieren. Ich lese die Teilnehmer in Edit-Feldern ein und möchte sie dann in zufällig in 2er-Gruppen ausgegeben haben.

Wie stelle ich das an ???


Schonmal Danke für die Antworten


inselberg - Mo 12.07.04 15:09

also du hast eine liste (memo1.lines) in der du einmalig 2er paare bilden möchtest


swingerclub
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var r1,r2:word;
begin
 randomize;
 with memo1.lines do
 while Count > 1 do
 begin
  r1 := random(Count-1);
  memo2.lines.add(memo1.lines[r1]);
  delete(r1);
  r2 := random(memo1.lines.Count-1);
  memo2.lines[memo2.lines.count-1] :=   memo2.lines[memo2.lines.count-1]  +' und '+memo1.lines[r2];
  delete(r2);
 end;
end;


Gausi - Mo 12.07.04 15:13

Hallo und :welcome:
Eine Möglichkeit wäre diese (in Pseudocode). Wie man das genau in dein Prog inbaut, weiss ich nicht, da ich nicht weiss, wie du z.b. die Personenliste oder die Teams speicherst.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
n:=Anzahl der Personen;
Auswahlliste:=Liste mit allen Personen;
for i:=0 to n do 
begin
   x:=Random(n-i); //zufällige Person wählen
   packe Person_Nr_x in Team_Nr(i DIV 2// diese Person ins Team packen
   entferne Person_Nr_x aus der Auswahlliste; // sicherstellen, dass diese Person nicht nochmal gewählt wird.
end;


Baphometschwarz - Mo 12.07.04 16:25

OK, die Lösung funktioniert !
Vielen Dank.

Jetzt habe ich aber noch ein Problem.

Ich möchte 7 Leute in 4 Teams unterteilen. Dazu teile ich die ersten 6 in 3 Teams ein. Der 7. kommt in Team 4 und hinzu kommt ein zufällig gewählter Teilnehmer aus Team 1 oder Team 2.

Wie bewerkstellige ich dies? Kann man nicht besser ein Array dafür benutzen??