Hallo.
In der Math.pas ist RandomRange definiert mit:
Delphi-Quellcode:
function RandomRange(const AFrom, ATo: Integer): Integer;
begin
if AFrom > ATo then
Result := Random(AFrom - ATo) + ATo
else
Result := Random(ATo - AFrom) + AFrom;
end;
Du brauchst also ein Random(), das mit BigInt funktioniert.
Leider enthält die BigInt.pas keine Random-Routine.
Eine
Google recherche hat mich zu folgendem Forenbeitrag geführt:
http://www.delphi-forum.de/viewtopic...hlight=bignum2
Wenn du auf BigNum2 umsteigst, müsstest du eine Random()-Routine dabei haben.
Wenn es unbedingt BigInt sein muss, könntest du irgendwie das normale "Random(): Integer" so oft kopieren, sodass der BigInteger möglichst voll ausgenutzt wird. Das halte ich aber für etwas umständlich und unprofessionell. Folgender Code (der im Moment nicht funktioniert) als Denkanstoß:
Delphi-Quellcode:
function BigRandom(): TBigInt;
var
i: integer;
bg: TBigInt;
begin
bg := TBigInt.Create;
for i := 1 to (High(bg) div High(Integer)) do
begin
bg.Add(Random(High(Integer));
end;
result := bg;
end;
Dann müsstest du eben schauen, wie oft der Integer maximal in den BigInteger "reinpasst" (unter der Annahme, dass Random() stets den höchste Integer-Wert annimmt). Ich würde das mit einer For-Schleife, wie oben gezeigt, machen.
Gruß
blackdrake