Wenn man schon vom 'Ziehen' spricht, dann könnte man das doch auch genau so implementieren: Ich habe einen Topf mit N Zahlen (1..N) und ziehe jedesmal eine zufällige Zahl heraus. Klar, nach jedem Ziehen enthält der Topf eine Zahl weniger.
Delphi-Quellcode:
Function Zupfeln (Var Zahlen : TCardinalList) : Cardinal;
Var
i : Cardinal;
Begin
i := Random (Zahlen.Count);
Result := Zahlen[i];
Zahlen.Delete(i);
End;
Also, was das Umsetzen einer Vorgabe anbelangt, würde ich das für optimal und elegant halten. Aber ich will mich -um Gottes willen- nicht mit Euch anlegen, sondern nur eine Portion berliner Senf (a.k.a. Mostrich) dazugeben.
Ach ja, kommt mir nicht im schlechter Performance, bitte.