How to get random Long-integer under D1
----------------------------------------
Random(Range:word) function under D1 returns random
integer with the uniform distribution on the interval
[0..Range-1]. Sometimes, however, range larger than
65535 (maximum value for Word type) is required.
The following function allows to specify range
in the interval [0..2147483647].
function LongD1Random(Range: Longint): Longint;
var
dummy: word;
c: comp;
x: array[0..1] of longint absolute c;
begin
x[1] := 0; { Clear higher DWORD of c }
X[0] := RandSeed; { We already have pseudorandom longint - RandSeed.
Move it into low DWORD of c }
Dummy := random(1); { New pseudorandom value is assigned to RandSeed during this call }
c := c*Range; { Scaling x[0] to [0..Range-1] interval requires multiplication into
64 bit integer ... }
Result:= x[1]; { .. and subsequent shr 32 operation. This is where Comp type comes handy }
end;