Herzlich willkommen in der Delphi-PRAXiS, Scarlett.
Hier noch eine Alternative zum Ansatz von Markus. Dabei wird nicht immer wieder aus der Vorratsmenge gezogen und geprüfft, ob es zu einer Wiederholung kam. Hier wird das Urnenprinzip umgesetzt, bei dem eine Zahl nicht nocheinmal gezogen werden kann, da sie nach der Ziehung nicht mehr zum Vorrat gehört:
Delphi-Quellcode:
uses
Types;
function RandomSelect(var ida: TIntegerDynArray): Integer;
var
iRandom: Integer;
begin
iRandom := Random(Length(ida));
Result := ida[iRandom];
ida[iRandom] := ida[High(ida)];
SetLength(ida, High(ida));
end;
Den Vorrat bildest du vorher so:
Delphi-Quellcode:
var
Vorrat: TIntegerDynArray;
begin
SetLength(Vorrat, 10);
for i := Low(Vorrat) to High(Vorrat) do
Vorrat[i] := Succ(i);
end;
Freundliche Grüße vom marabu