Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: 3 Zufallszahlen ohne Wiederholung

  Alt 25. Mai 2006, 16:09
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
  Mit Zitat antworten Zitat