Hola mastersolid.
Ignoro los valores de prueba que utilizaste, pero fijate si de este modo te sigue dando diferencias:
Código Delphi
[-]
...
const
LEN = 607;
TAP = 273;
MASK = $7FFFFFFF;
A = 48271;
M = 2147483647;
Q = 44488;
R = 3399;
var
rng_vec : array [0..LEN] of Cardinal;
rng_tap : ^Cardinal = @rng_vec;
rng_feed: ^Cardinal;
function isrand(_seed:Integer):Cardinal;
var
seed,lo,hi,x: Cardinal;
i: Integer;
begin
seed := _seed;
rng_tap := @rng_vec;
rng_feed := @rng_vec[LEN - TAP];
seed := seed mod M;
if seed < 0 then Inc(seed,M);
if seed = 0 then seed := 89482311;
x := seed;
i := -20;
while i < LEN do
begin
hi := x div Q;
lo := x mod Q;
x := A*lo - R*hi;
if x < 0 then Inc(x, M);
if i >= 0 then rng_vec[i] := x;
Inc(i);
end;
Result:= x; end;
...
Saludos