repetir rango rand positivos para numeros negativos metodos matriz generar generan funcion congruenciales como aleatorios aleatoria matlab random

rango - numeros aleatorios positivos y negativos en matlab



Cómo establecer una semilla personalizada para el generador de números pseudoaleatorios (4)

Cuando solo desee restablecer el RNG a algún estado conocido, simplemente use:

seed = 0; randn(''state'', seed); rand (''state'', seed); A = round(10*(rand(1,5))); // always will be [10 2 6 5 9]

Necesito realizar algunas pruebas donde uso randn pseudo generador de números aleatorios. ¿Cómo puedo establecer la semilla por mi cuenta, por lo que cada vez que ejecuto esta prueba obtendré los mismos resultados? (Sí, sé que es un poco raro, pero ese es el problema).

Encontré el objeto RANDSTREAM que tiene la propiedad seed , pero solo es de lectura. ¿Hay alguna forma de usarlo para sembrar el generador?


La vieja forma de hacerlo:

randn(''seed'',0)

La nueva forma:

s = RandStream(''mcg16807'',''Seed'',0) RandStream.setDefaultStream(s)

Tenga en cuenta que si utiliza la nueva forma, rand y randn comparten el mismo flujo, por lo que si llama a ambos, es posible que se generen números diferentes en comparación con el método anterior (que tiene generadores separados). El antiguo método aún es compatible por esta razón (y el código heredado).

Consulte http://www.mathworks.com/help/techdoc/math/bsn94u0-1.html para obtener más información.


Simplemente puede llamar a rng(mySeed) para establecer la semilla para la secuencia global (probado en Matlab R2011b). Esto afecta las randn rand , randn y randi .

La misma página que James colocó en una lista esta como la alternativa recomendada para varios métodos antiguos (vea la celda central de la columna derecha de la tabla).

Aquí hay un código de ejemplo:

format long; % Display numbers with full precision format compact; % Get rid of blank lines between output mySeed = 10; rng(mySeed); % Set the seed disp(rand([1,3])); disp(randi(10,[1,10])); disp(randn([1,3])); disp('' ''); rng(mySeed); % Set the seed again to duplicate the results disp(rand([1,3])); disp(randi(10,[1,10])); disp(randn([1,3]));

Su salida es:

0.771320643266746 0.020751949359402 0.633648234926275 8 5 3 2 8 2 1 7 10 1 0.060379730526407 0.622213879877005 0.109700311365407 0.771320643266746 0.020751949359402 0.633648234926275 8 5 3 2 8 2 1 7 10 1 0.060379730526407 0.622213879877005 0.109700311365407


mySeed=57; % an integer number rng(mySeed,''twister'') %You can replace ''twister'' with other generators