Mal nochmal ein anderer Ansatz, bei dem die Überprüfung auf vorherige Werte schnell geht.
Delphi-Quellcode:
const obereGrenze = 20;
const Anzahl = 5;
procedure TForm1.Button1Click(Sender: TObject);
var
Liste : Array of Integer;
i,a : Integer;
begin
Edit1.Text:='';
SetLength(Liste,obereGrenze);
Randomize;
i:=0;
while i < Anzahl do
begin
a:=Random(obereGrenze);
if Liste[a]<>1 then
begin
Liste[a]:=1;
Inc(i);
end;
end;
//Ausgabe:
for i:=0 to ObereGrenze-1 do
if Liste[i]=1 then Edit1.Text:=Edit1.Text+','+IntToStr(i);
end;