¿Por qué se repiten números aleatorios después del inicio?
Todas las funciones de números aleatorios, rand
, randn
, randi
y randperm
, extraen valores de un generador de números aleatorios compartido. Cada vez que inicie MATLAB®, el generador se restablece en el mismo estado con la semilla y algoritmo predeterminados. Así, un comando como rand(2,2)
devuelve el mismo resultado cada vez que lo ejecute justo después del inicio en sesiones distintas de MATLAB que tengan la misma configuración para el generador de números aleatorios. Además, cualquier script o función que llame a las funciones de números aleatorios devuelve el mismo resultado siempre que reinicia.
Cuando inicia una sesión en MATLAB por primera vez o llama a rng("default")
, MATLAB inicializa el generador de números aleatorios usando la semilla y algoritmo predeterminados. Puede establecer la semilla y algoritmo predeterminados en las preferencias de MATLAB (desde R2023b). Si no cambia estas preferencias, rng
utiliza el valor de fábrica de "twister"
para el generador Mersenne Twister con semilla 0, como en las versiones anteriores. Para obtener más información, consulte Configuración predeterminada del generador de números aleatorios y Reproducibilidad del generador de números aleatorios.
Si no desea repetir los mismos arreglos de números aleatorios cuando reinicie MATLAB, utilice
rng("shuffle")
antes de llamar arand
,randn
,randi
orandperm
. Este comando asegura que no repita un resultado de una sesión de MATLAB anterior.Si desea repetir un resultado que obtuvo al inicio de una sesión de MATLAB sin reiniciar, puede restablecer el generador al estado de inicio con
rng("default")
.
Cuando ejecuta rng("default")
, los comandos de números aleatorios consiguientes devuelven resultados que coinciden con la salida de otra sesión de MATLAB que utiliza el mismo algoritmo y semilla por defecto para el generador de números aleatorios.
rng("default");
A = rand(2,2)
A = 0.8147 0.1270 0.9058 0.9134
A
coinciden con la salida de rand(2,2)
cada vez que reinicia MATLAB utilizando la misma configuración para el generador de números aleatorios.Como alternativa, también puede repetir un resultado especificando la semilla y el algoritmo utilizados para el generador de números aleatorios. Por ejemplo, establece la semilla en 1
y el algoritmo generador en Mersenne Twister
rng(1,"twister");
Cree un arreglo de números aleatorios.
A = rand(2,2)
A = 0.4170 0.0001 0.7203 0.3023
Luego, en una nueva sesión de MATLAB, repita los mismos comandos para reproducir el arreglo A
.
rng(1,"twister");
A = rand(2,2)
A = 0.4170 0.0001 0.7203 0.3023