Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

Re: Wieso funktioniert das mit dem Zufall nicht?

  Alt 2. Nov 2005, 01:09
Zitat von franktron:
ManuMFs idee ist schon gut weil dir Random Funktion auf der Systemzeit beruht (sowiet das noch so ist)
Zitat von alzaimar:
Wann war das denn mal? Eigentlich kann das nicht sein, weil ein Random-Generator deterministisch sein muss. Wenn ich ihn wohldefiniert initialisiere, dann soll er mir immer die selbe Folge von Pseudozufallszahlen liefern. Ohne Randomize macht er das. Randomize selbst ist abhängig von der Zeit.
Stimmt genau ... nur in Randomize findet man etwas Zeitabhängiges ^^
Delphi-Quellcode:
Var RandSeed: LongInt;

Procedure Randomize;
  Var Count: LargeInt;

  Begin
    If QueryPerformanceCounter(Count) Then RandSeed := Count
    Else RandSeed := GetTickCount;
  End;

Function Random(Range: LongInt): LongInt; Overload;
  // Borland Delphi v7.0 Build 4453
  Begin
    RandSeed := RandSeed * 134775813 + 1;
    //Result := LargeInt(Range) * LongWord(RandSeed) div LargeInt($100000000);
    Result := TLargeIntRec(LargeInt(Range) * LongWord(RandSeed)).Hi;
  End;

Function Random: Extended; Overload;
  // Borland Delphi v7.0 Build 4453
  Begin
    RandSeed := RandSeed * 134775813 + 1;
    //Result := 1.0 * LongWord(RandSeed) / LargeInt($100000000);
    Result := LongWord(RandSeed) / LargeInt($100000000);
  End;
$2B or not $2B
  Mit Zitat antworten Zitat