Hallo,
ich muss für ein Programm eine Zufallsliste an Zahlen von 1 - X erstellen!
Dabei sollte jede Zahl nur 1x vorkommen, dafür aber jede!
Das ganze wird in einem aufsteigenden Array gespeichert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| sl := TStringlist.Create; SetLength(route, anz_max); i := 0; repeat r := random(anz_max); if sl.IndexOf(inttostr(r)) = -1 then begin sl.Add(inttostr(r)); route[i] := r; inc(i); end; until i = anz_max; sl.Free; |
Durch die Stringlist wird ja somit überprüft, ob die Zahl schon existiert!
Aber mir erscheint das ganze irgendwie "unsauber" gecodet! Gerade durch die Stringlist!
Mein 2. Problem wäre, wenn die maximale Zahl z.B. > 100 wird! Dann würde es aus der Überlegung heraus vorkommen können, dass er teilweise 2-3 Sekunden braucht, bis er die Liste erstellt hat.
Gibt es hierfür eine elegantere Lösung?
Vielen herzlichen Dank
gruß
Timelesk