Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
AW: Effiziente Erzeugung, nicht gleicher Zufallszahlen
10. Mai 2011, 15:55
Ich hab auch noch eine Variante ohne Generics:
Delphi-Quellcode:
type
TIntegerArray = array of integer;
procedure GetUniqueRandomNumbers(var IntArray: TIntegerArray; Value1, Value2: Integer);
var
BiggerVal,
SmallerVal,
i: integer;
procedure Swap(i1, i2: integer);
var
temp: integer;
begin
temp := IntArray[i1];
IntArray[i1] := IntArray[i2];
IntArray[i2] := temp;
end;
begin
if Value1 > Value2 then
begin
BiggerVal := Value1;
SmallerVal := Value2;
end
else
begin
BiggerVal := Value2;
SmallerVal := Value1;
end;
SetLength(IntArray, BiggerVal - SmallerVal + 1);
for i := Low(IntArray) to High(IntArray) do
IntArray[i] := SmallerVal + i;
for i := Low(IntArray) to High(IntArray) do
Swap(i, Random(Length(IntArray)));
end;
initialization
Randomize;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|