mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-28 15:20:27 +02:00
* rtl: implement TRandomGenerator for thread-safe random
git-svn-id: trunk@47598 -
This commit is contained in:
parent
9c1c2acd64
commit
c4dd3b661a
@ -89,7 +89,7 @@ function paramstr(l: longint) : string;
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
Begin
|
Begin
|
||||||
randseed:=longint(Fptime(nil));
|
randseed:=longint(Fptime(nil));
|
||||||
End;
|
End;
|
||||||
|
@ -256,7 +256,7 @@ end;
|
|||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
Procedure randomize(var randseed: cardinal);
|
||||||
var tmpTime: TDateStamp;
|
var tmpTime: TDateStamp;
|
||||||
begin
|
begin
|
||||||
DateStamp(@tmpTime);
|
DateStamp(@tmpTime);
|
||||||
|
@ -175,7 +175,7 @@ end;
|
|||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
tmpTime: TDateStamp;
|
tmpTime: TDateStamp;
|
||||||
begin
|
begin
|
||||||
|
@ -123,7 +123,7 @@ var
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
{$WARNING: randseed initial value is 24bit}
|
{$WARNING: randseed initial value is 24bit}
|
||||||
randseed:=xbios_random;
|
randseed:=xbios_random;
|
||||||
|
@ -280,7 +280,7 @@ begin
|
|||||||
paramstr := '';
|
paramstr := '';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
Begin
|
Begin
|
||||||
randseed:=longint(Fptime(nil));
|
randseed:=longint(Fptime(nil));
|
||||||
End;
|
End;
|
||||||
|
@ -165,7 +165,7 @@ function paramstr(l: longint) : string;
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
Begin
|
Begin
|
||||||
randseed:=longint(Fptime(nil));
|
randseed:=longint(Fptime(nil));
|
||||||
End;
|
End;
|
||||||
|
@ -244,7 +244,7 @@ function paramstr(l: longint) : string;
|
|||||||
{$endif FPC_HAS_FEATURE_COMMANDARGS}
|
{$endif FPC_HAS_FEATURE_COMMANDARGS}
|
||||||
|
|
||||||
{$ifdef FPC_HAS_FEATURE_RANDOM}
|
{$ifdef FPC_HAS_FEATURE_RANDOM}
|
||||||
procedure randomize();
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
RandSeed := 63458;
|
RandSeed := 63458;
|
||||||
end;
|
end;
|
||||||
|
@ -242,7 +242,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize; assembler;
|
procedure randomize(var randseed: cardinal); assembler; // ToDo
|
||||||
asm
|
asm
|
||||||
mov ah, 2Ch
|
mov ah, 2Ch
|
||||||
call syscall
|
call syscall
|
||||||
|
@ -249,7 +249,7 @@ function paramstr(l: longint) : string;
|
|||||||
|
|
||||||
|
|
||||||
{$ifdef FPC_HAS_FEATURE_RANDOM}
|
{$ifdef FPC_HAS_FEATURE_RANDOM}
|
||||||
procedure randomize();
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
RandSeed := 63458;
|
RandSeed := 63458;
|
||||||
end;
|
end;
|
||||||
|
@ -63,8 +63,6 @@ var
|
|||||||
fake_heap_end: ^byte; cvar; external;
|
fake_heap_end: ^byte; cvar; external;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize(value: integer);
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{$linklib sysbase}
|
{$linklib sysbase}
|
||||||
@ -110,16 +108,11 @@ end;
|
|||||||
ParamStr/Randomize
|
ParamStr/Randomize
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
procedure randomize();
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
RandSeed := 63458;
|
RandSeed := 63458;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure randomize(value: integer);
|
|
||||||
begin
|
|
||||||
RandSeed := value;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{$ifdef FPC_HAS_FEATURE_COMMANDARGS}
|
{$ifdef FPC_HAS_FEATURE_COMMANDARGS}
|
||||||
{ number of args }
|
{ number of args }
|
||||||
function paramcount : longint;
|
function paramcount : longint;
|
||||||
|
@ -581,7 +581,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
hl : longint;
|
hl : longint;
|
||||||
regs : trealregs;
|
regs : trealregs;
|
||||||
|
@ -154,7 +154,7 @@ begin
|
|||||||
paramstr := '';
|
paramstr := '';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
Begin
|
Begin
|
||||||
randseed:=longint(Fptime(nil));
|
randseed:=longint(Fptime(nil));
|
||||||
End;
|
End;
|
||||||
|
@ -51,8 +51,6 @@ const
|
|||||||
{$else}
|
{$else}
|
||||||
STACK_MARGIN = 16384; { Stack size margin for stack checking }
|
STACK_MARGIN = 16384; { Stack size margin for stack checking }
|
||||||
{$endif}
|
{$endif}
|
||||||
{ Random / Randomize constants }
|
|
||||||
OldRandSeed : Cardinal = 0;
|
|
||||||
|
|
||||||
{ For Error Handling.}
|
{ For Error Handling.}
|
||||||
ErrorBase : Pointer = nil;public name 'FPC_ERRORBASE';
|
ErrorBase : Pointer = nil;public name 'FPC_ERRORBASE';
|
||||||
@ -603,29 +601,12 @@ type
|
|||||||
{$R-} {range checking off}
|
{$R-} {range checking off}
|
||||||
{$Q-} {overflow checking off}
|
{$Q-} {overflow checking off}
|
||||||
|
|
||||||
const
|
function TRandomGenerator.MTWIST_MIXBITS(u, v: cardinal): cardinal; inline;
|
||||||
MTWIST_N = 624;
|
|
||||||
MTWIST_M = 397;
|
|
||||||
|
|
||||||
MT_STATIC_SEED = 5489;
|
|
||||||
|
|
||||||
MTWIST_UPPER_MASK = cardinal($80000000);
|
|
||||||
MTWIST_LOWER_MASK = cardinal($7FFFFFFF);
|
|
||||||
|
|
||||||
MTWIST_MATRIX_A = cardinal($9908B0DF);
|
|
||||||
|
|
||||||
var
|
|
||||||
mt_state: array[0..MTWIST_N-1] of cardinal;
|
|
||||||
|
|
||||||
const
|
|
||||||
mt_index: cardinal = MTWIST_N+1;
|
|
||||||
|
|
||||||
function MTWIST_MIXBITS(u, v: cardinal): cardinal; inline;
|
|
||||||
begin
|
begin
|
||||||
result:=(u and MTWIST_UPPER_MASK) or (v and MTWIST_LOWER_MASK);
|
result:=(u and MTWIST_UPPER_MASK) or (v and MTWIST_LOWER_MASK);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function MTWIST_TWIST(u, v: cardinal): cardinal; inline;
|
function TRandomGenerator.MTWIST_TWIST(u, v: cardinal): cardinal; inline;
|
||||||
begin
|
begin
|
||||||
{ the construct at the end is equivalent to
|
{ the construct at the end is equivalent to
|
||||||
if odd(v) then
|
if odd(v) then
|
||||||
@ -636,7 +617,7 @@ begin
|
|||||||
result:=(MTWIST_MIXBITS(u,v) shr 1) xor (cardinal(-(v and 1)) and MTWIST_MATRIX_A);
|
result:=(MTWIST_MIXBITS(u,v) shr 1) xor (cardinal(-(v and 1)) and MTWIST_MATRIX_A);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure mtwist_init(seed: cardinal);
|
procedure TRandomGenerator.mtwist_init(seed: cardinal);
|
||||||
var
|
var
|
||||||
i: longint;
|
i: longint;
|
||||||
begin
|
begin
|
||||||
@ -647,7 +628,7 @@ begin
|
|||||||
mt_index:=MTWIST_N;
|
mt_index:=MTWIST_N;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure mtwist_update_state;
|
procedure TRandomGenerator.mtwist_update_state;
|
||||||
var
|
var
|
||||||
count: longint;
|
count: longint;
|
||||||
begin
|
begin
|
||||||
@ -668,7 +649,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function mtwist_u32rand: cardinal;
|
function TRandomGenerator.mtwist_u32rand: cardinal;
|
||||||
var
|
var
|
||||||
l_index :cardinal;
|
l_index :cardinal;
|
||||||
begin
|
begin
|
||||||
@ -702,7 +683,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function random(l:longint): longint;
|
function TRandomGenerator.Random(l:longint): longint;
|
||||||
begin
|
begin
|
||||||
{ otherwise we can return values = l (JM) }
|
{ otherwise we can return values = l (JM) }
|
||||||
if (l < 0) then
|
if (l < 0) then
|
||||||
@ -710,7 +691,7 @@ begin
|
|||||||
random := longint((int64(mtwist_u32rand)*l) shr 32);
|
random := longint((int64(mtwist_u32rand)*l) shr 32);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function random(l:int64): int64;
|
function TRandomGenerator.Random(l:int64): int64;
|
||||||
var
|
var
|
||||||
a, b, c, d: cardinal;
|
a, b, c, d: cardinal;
|
||||||
q, bd, ad, bc, ac: qword;
|
q, bd, ad, bc, ac: qword;
|
||||||
@ -745,12 +726,49 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifndef FPUNONE}
|
{$ifndef FPUNONE}
|
||||||
function random: extended;
|
function TRandomGenerator.Random: extended;
|
||||||
begin
|
begin
|
||||||
random := mtwist_u32rand * (extended(1.0)/(int64(1) shl 32));
|
random := mtwist_u32rand * (extended(1.0)/(int64(1) shl 32));
|
||||||
end;
|
end;
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
procedure TRandomGenerator.Randomize(ARandSeed: cardinal);
|
||||||
|
begin
|
||||||
|
mt_index:=MTWIST_N+1;
|
||||||
|
OldRandSeed:=0;
|
||||||
|
Self.RandSeed:=ARandSeed;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRandomGenerator.Randomize;
|
||||||
|
begin
|
||||||
|
mt_index:=MTWIST_N+1;
|
||||||
|
OldRandSeed:=0;
|
||||||
|
System.Randomize(Self.RandSeed);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function random(l:longint): longint;
|
||||||
|
begin
|
||||||
|
Result:=RandGenerator.Random(l);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function random(l:int64): int64;
|
||||||
|
begin
|
||||||
|
Result:=RandGenerator.Random(l);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ifndef FPUNONE}
|
||||||
|
function random: extended;
|
||||||
|
begin
|
||||||
|
Result:=RandGenerator.Random;
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
Procedure Randomize;
|
||||||
|
begin
|
||||||
|
RandGenerator.Randomize;
|
||||||
|
end;
|
||||||
|
|
||||||
{$else FPC_USE_SIMPLE_RANDOM}
|
{$else FPC_USE_SIMPLE_RANDOM}
|
||||||
|
|
||||||
{ A simple implementation of random. TP/Delphi compatible. }
|
{ A simple implementation of random. TP/Delphi compatible. }
|
||||||
|
@ -786,7 +786,51 @@ const
|
|||||||
|
|
||||||
var
|
var
|
||||||
ExitCode : TExitCode; public name 'operatingsystem_result';
|
ExitCode : TExitCode; public name 'operatingsystem_result';
|
||||||
|
|
||||||
|
{ Random / Randomize definitions and variables }
|
||||||
|
{$if defined(FPC_HAS_FEATURE_RANDOM)}
|
||||||
|
{$ifndef FPC_USE_SIMPLE_RANDOM}
|
||||||
|
type
|
||||||
|
TRandomGenerator = record
|
||||||
|
private const
|
||||||
|
MTWIST_N = 624;
|
||||||
|
MTWIST_M = 397;
|
||||||
|
|
||||||
|
MTWIST_UPPER_MASK = cardinal($80000000);
|
||||||
|
MTWIST_LOWER_MASK = cardinal($7FFFFFFF);
|
||||||
|
|
||||||
|
MTWIST_MATRIX_A = cardinal($9908B0DF);
|
||||||
|
|
||||||
|
private
|
||||||
|
mt_index: cardinal;
|
||||||
|
RandSeed: cardinal;
|
||||||
|
OldRandSeed: cardinal;
|
||||||
|
mt_state: array[0..MTWIST_N-1] of cardinal;
|
||||||
|
|
||||||
|
function MTWIST_MIXBITS(u, v: cardinal): cardinal; inline;
|
||||||
|
function MTWIST_TWIST(u, v: cardinal): cardinal; inline;
|
||||||
|
procedure mtwist_init(seed: cardinal);
|
||||||
|
procedure mtwist_update_state;
|
||||||
|
function mtwist_u32rand: cardinal;
|
||||||
|
public
|
||||||
|
procedure Randomize;
|
||||||
|
procedure Randomize(ARandSeed: cardinal);
|
||||||
|
|
||||||
|
function Random(l:longint): longint;
|
||||||
|
function Random(l: int64): int64;
|
||||||
|
{$ifndef FPUNONE}
|
||||||
|
function Random: extended;
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
var
|
||||||
|
RandGenerator: TRandomGenerator = (mt_index:TRandomGenerator.MTWIST_N+1; RandSeed:0; OldRandSeed:0);
|
||||||
|
RandSeed: Cardinal absolute RandGenerator.RandSeed;
|
||||||
|
{$else FPC_USE_SIMPLE_RANDOM}
|
||||||
|
var
|
||||||
RandSeed : Cardinal;
|
RandSeed : Cardinal;
|
||||||
|
{$endif FPC_USE_SIMPLE_RANDOM}
|
||||||
|
{$endif FPC_HAS_FEATURE_RANDOM}
|
||||||
|
|
||||||
{ Delphi compatibility }
|
{ Delphi compatibility }
|
||||||
|
|
||||||
{$ifdef FPC_HAS_FEATURE_DYNLIBS}
|
{$ifdef FPC_HAS_FEATURE_DYNLIBS}
|
||||||
@ -932,6 +976,7 @@ Function Random(l:int64):int64;
|
|||||||
Function Random: extended;
|
Function Random: extended;
|
||||||
{$endif}
|
{$endif}
|
||||||
Procedure Randomize;
|
Procedure Randomize;
|
||||||
|
Procedure Randomize(var RandSeed: cardinal);
|
||||||
{$endif FPC_HAS_FEATURE_RANDOM}
|
{$endif FPC_HAS_FEATURE_RANDOM}
|
||||||
|
|
||||||
{$if defined(CPUINT8)}
|
{$if defined(CPUINT8)}
|
||||||
|
@ -453,7 +453,7 @@ function paramstr(l: longint) : string;
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
Begin
|
Begin
|
||||||
randseed:=longint(Fptime(nil));
|
randseed:=longint(Fptime(nil));
|
||||||
End;
|
End;
|
||||||
|
@ -239,7 +239,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
randseed:= Cardinal(TickCount);
|
randseed:= Cardinal(TickCount);
|
||||||
end;
|
end;
|
||||||
|
@ -179,7 +179,7 @@ end;
|
|||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var tmpTime: TDateStamp;
|
var tmpTime: TDateStamp;
|
||||||
begin
|
begin
|
||||||
DateStamp(@tmpTime);
|
DateStamp(@tmpTime);
|
||||||
|
@ -578,7 +578,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
hl : longint;
|
hl : longint;
|
||||||
regs : Registers;
|
regs : Registers;
|
||||||
|
@ -591,7 +591,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
{$ifdef todo}
|
{$ifdef todo}
|
||||||
var
|
var
|
||||||
hl : longint;
|
hl : longint;
|
||||||
|
@ -263,7 +263,7 @@ end;
|
|||||||
|
|
||||||
procedure KeQueryTickCount(TickCount: PLargeInteger); stdcall; external ntdll name 'KeQueryTickCount';
|
procedure KeQueryTickCount(TickCount: PLargeInteger); stdcall; external ntdll name 'KeQueryTickCount';
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
tc: PLargeInteger;
|
tc: PLargeInteger;
|
||||||
begin
|
begin
|
||||||
|
@ -133,7 +133,7 @@ end;
|
|||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
IPC_Timer: array [0..2] of byte absolute $27FF01B;
|
IPC_Timer: array [0..2] of byte absolute $27FF01B;
|
||||||
begin
|
begin
|
||||||
|
@ -225,7 +225,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
randseed := _time (NIL);
|
randseed := _time (NIL);
|
||||||
end;
|
end;
|
||||||
|
@ -212,7 +212,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
randseed := time (NIL);
|
randseed := time (NIL);
|
||||||
end;
|
end;
|
||||||
|
@ -823,7 +823,7 @@ begin
|
|||||||
else paramstr:='';
|
else paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
dt: TSysDateTime;
|
dt: TSysDateTime;
|
||||||
begin
|
begin
|
||||||
|
@ -102,7 +102,7 @@ var
|
|||||||
GenerateArgs;
|
GenerateArgs;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
{$WARNING: randseed initial value is zero!}
|
{$WARNING: randseed initial value is zero!}
|
||||||
randseed:=0;
|
randseed:=0;
|
||||||
|
@ -113,7 +113,7 @@ procedure SysInitParamsAndEnv;
|
|||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
{$WARNING: randseed is uninitialized}
|
{$WARNING: randseed is uninitialized}
|
||||||
randseed:=0;
|
randseed:=0;
|
||||||
|
@ -121,7 +121,7 @@ function paramstr(l: longint) : string;
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure Randomize;
|
Procedure Randomize(var randseed: cardinal);
|
||||||
Begin
|
Begin
|
||||||
randseed:=longint(Fptime(nil));
|
randseed:=longint(Fptime(nil));
|
||||||
End;
|
End;
|
||||||
|
@ -153,7 +153,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
// randseed:=GetTickCount;
|
// randseed:=GetTickCount;
|
||||||
end;
|
end;
|
||||||
|
@ -651,7 +651,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
var
|
var
|
||||||
hl : longint;
|
hl : longint;
|
||||||
regs : trealregs;
|
regs : trealregs;
|
||||||
|
@ -103,7 +103,7 @@ end;
|
|||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
{ set randseed to a new pseudo random value }
|
{ set randseed to a new pseudo random value }
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
@ -359,7 +359,7 @@ end;
|
|||||||
|
|
||||||
{*****************************************************************************}
|
{*****************************************************************************}
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
randseed:=GetTickCount;
|
randseed:=GetTickCount;
|
||||||
end;
|
end;
|
||||||
|
@ -445,7 +445,7 @@ begin
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
randseed:=GetTickCount;
|
randseed:=GetTickCount;
|
||||||
end;
|
end;
|
||||||
|
@ -755,7 +755,7 @@ begin
|
|||||||
paramstr:='';
|
paramstr:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
randseed:=GetTickCount;
|
randseed:=GetTickCount;
|
||||||
end;
|
end;
|
||||||
|
@ -111,7 +111,7 @@ var
|
|||||||
{$endif FPC_HAS_FEATURE_SOFTFPU}
|
{$endif FPC_HAS_FEATURE_SOFTFPU}
|
||||||
{$endif FPUNONE}
|
{$endif FPUNONE}
|
||||||
|
|
||||||
procedure randomize;
|
procedure randomize(var randseed: cardinal);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user