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.