Ver Mensaje Individual
  #6  
Antiguo 24-01-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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; // ???? (sin return en la función C)
end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita