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