Einzelnen Beitrag anzeigen

KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Random ohne doppelte Zahlen

  Alt 3. Okt 2008, 12:57
Also ich hab hier nen code, bei dem man in ~17ms (meine alte 3GHz Monocoremöre ) ein Array mit 100.000 Zufallszahlen ohne Doppelte erstellen kann.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  variablen : array[1..100000] of integer;
  i,zufall : integer;
  start,ende,frequenz,counter : int64;
begin
  randomize;
  QueryPerformanceFrequency(frequenz);
  counter := 0;
  QueryPerformanceCounter(start);
  for i := 1 to high(variablen) do variablen[i] := 0;
  for i := 1 to high(variablen) do
  begin
    repeat
      zufall := random(high(variablen)) + 1;
      inc(counter); //bei 100.000 ca. 1,1 Mio
    until variablen[zufall] = 0;
    variablen[zufall] := i;
  end;
  QueryPerformanceCounter(ende);
{
  memo1.Lines.BeginUpdate;
  for i := 1 to high(variablen) do memo1.Lines.Add(inttostr(variablen[i]));
  memo1.Lines.EndUpdate;
}

  memo1.Lines.Add(floattostr((ende-start)/frequenz)+'s');
  memo1.Lines.Add(inttostr(counter));
end;
Thomas H.
  Mit Zitat antworten Zitat