Thema: Delphi Mischen Funktion

Einzelnen Beitrag anzeigen

Anthauri

Registriert seit: 1. Feb 2004
61 Beiträge
 
Delphi 6 Personal
 
#11

Re: Mischen Funktion

  Alt 16. Sep 2004, 17:41
und nochmal Hi.

Natürlich hat "Ratte" recht, es muss Random(30) lauten..ich werde wohl alt...

Hier exemplarisch meine Lösung mit der Stringlist (die eigentlich eher für Dateinamen gedacht war)
Damit ich im Test auch etwas sehen konnte, habe ich eine Listbox genommen, etwas nichtvisuelles geht aber natürlich auch. Hier sind es sogar zwei. Eine mit den Vorgabewerten und eine mit dem Ergebnis.

Delphi-Quellcode:
procedure TForm1.Button_startClick(Sender: TObject);
var
 i :integer;

begin
 // die Maximale Anzahl wird gesetzt
 anzahl := 30;

 // die Vorgabeliste wird geleert
 listbox_vorgabe.Items.Clear;

 // die Schleife füllt die Liste mit den möglichen Werten
 // in diesem Fall einfach Zahlen
 i := 1;
 for i := 1 to anzahl do
 begin;
  listbox_vorgabe.Items.Append(inttostr(i));
 end;

 // die Ausgabeliste wird geleert
 listbox_ausgabe.Items.Clear;

 randomize;

 // in der Vorgabeliste wird ein beliebiges Item gewählt, in die Ausgabeliste angehängt
 // und in der Vorgabeliste gelöscht bis keine Items mehr da sind
 while listbox_vorgabe.Items.Count > 0 do
 begin;
  zufallszahl := random(listbox_vorgabe.Items.Count);

  listbox_ausgabe.Items.Append(listbox_vorgabe.Items.Strings[zufallszahl]);
  listbox_vorgabe.Items.Delete(zufallszahl);
 end;

 //nun enthält die Vorgabeliste keine Items mehr
 //und die Ausgabeliste eine zufällige Reihenfolge der Items
end;
Ggf. ist die Lösung nicht elegant, aber sie sollte gehen.
  Mit Zitat antworten Zitat