Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: BigInt: RandomRange Funktion?

  Alt 1. Sep 2008, 19:20
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
Daniel Marschall
  Mit Zitat antworten Zitat