Cita:
Empezado por fer21unmsm
Pero si usas los valores correctos con el congruencial mixto multiplicativo no pasaria esto.
|
fer21unmsm, de eso precisamente me refiero cuando le indico a coletaun sobre mis algoritmos que puede conseguir en el hilo 1 que mencioné.
Y ahora que me acuerdo... no debería modificar ninguna parte del código. Si emplea el algoritmo Mixer() que detallo a continuación:
Código Delphi
[-]function Mixer(Seed_X0, a, b, m, Series: int64; var List: TStringList): integer;
var Ant,Sig:int64;
i:integer;
begin
result := Preventive2(Seed_X0,a,m,Series);
if result <> PROCESS
then exit;
Ant := 0;
List.Clear;
for i:=0 to Series-1 do
begin
if i = 0
then begin
List.Add(Format(RS_RESULT,[i,Seed_X0]));
Ant := Seed_X0;
end
else begin
Sig := (((a * Ant) + b) mod m);
List.Add(Format(RS_RESULT,[i,Sig]));
Ant := Sig;
end;
end;
result := GENERATE;
end;
Siendo Preventive2:
Código Delphi
[-]function Preventive2(Seed_X0,a,m,Series:int64): integer;
begin
if Seed_X0 = 0
then begin
result := SEED_X0_ZERO;
exit;
end;
if a = 0
then begin
result := A_ZERO;
exit;
end;
if m = 0
then begin
result := M_ZERO;
exit;
end;
if Series < 1
then begin
result := INCORRECT_SERIES;
exit;
end;
result := PROCESS;
end;
Las declaraciones en mayúsculas como M_ZERO son constantes y no vienen al caso ponerlas... que ya es intituivo.
Con los parámetros indicados, conseguirá su propósito No es necesario alterarlo... en List quedarán registrados los valores que necesite
.
De seguro que en el enlace que mencionas va a cosneguir información académica y la explicación del algoritmo. Junto con el axioma adecuado para elegir los valores.
Cita:
Empezado por fer21unmsm
Por si acaso estos números no deben llamarse aleatoreos (ya que eso lo logras con tecnicas realmente al azar como el metodo de montecarlo, o utilizando la tabla de ibm utilizada para obtener numeros aleatoreos reales, ya que los números que te botan los metodos mencionados arriba se denomina pseudoaleatoreos, pero para los programas o sistemas se utilizan estos numeros pseudoaleatoreos
|
Si... es cierto... deberían llamarlos asi. Pero para simplificar las cosas... y evitar alguna confusión de parte de coletaun. Sería meyor decirles aleatorios. Y recuerda fer21unmsm, estos métodos están basados en la teoría de los grandes números... y hay tests adecuados para verifivar si pueden considerarse "aletorios". Yo hice mis pruebas a todos mis algoritmos, con diversos valores y la pasaron en un 100%
.
Robert01, habría que ofreces en el enlace que detallas. Y no deberían descartarse...
A ver que dice coletaun de esto: si le sirve... o definitivamente lo hemos asustado con esto de los generadores multiplicativos... tests y teoria de los grandes números.
Saludos,