mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 00:39:34 +02:00
* random(int64(0)) now return 0 instead of division by zero
* random(negative_longint) now returns values between -l+1 and 0 instead of between -l and 0 git-svn-id: trunk@2422 -
This commit is contained in:
parent
d515fed3db
commit
1bcde3436d
@ -434,12 +434,20 @@ end;
|
||||
|
||||
function random(l:longint): longint;
|
||||
begin
|
||||
{ otherwise we can return values = l (JM) }
|
||||
if (l < 0) then
|
||||
inc(l);
|
||||
random := longint((int64(cardinal(genrand_MT19937))*l) shr 32);
|
||||
end;
|
||||
|
||||
function random(l:int64): int64;
|
||||
begin
|
||||
random := int64((qword(cardinal(genrand_MT19937)) or ((qword(cardinal(genrand_MT19937)) shl 32))) and $7fffffffffffffff) mod l;
|
||||
{ always call random, so the random generator cycles (TP-compatible) (JM) }
|
||||
random := int64((qword(cardinal(genrand_MT19937)) or ((qword(cardinal(genrand_MT19937)) shl 32))) and $7fffffffffffffff);
|
||||
if (l<>0) then
|
||||
random := random mod l
|
||||
else
|
||||
random := 0;
|
||||
end;
|
||||
|
||||
function random: extended;
|
||||
|
Loading…
Reference in New Issue
Block a user