Generar números aleatorios que sean repetibles
Especificar la semilla y el algoritmo generador
Este ejemplo muestra cómo repetir arreglos de números aleatorios especificando primero la semilla y el algoritmo generador. Cada vez que inicialice el generador con la misma semilla y algoritmo, siempre obtendrá el mismo resultado.
Primero, inicie el generador de números aleatorios para hacer que los resultados de este ejemplo sean repetibles. Por ejemplo, el siguiente código establece la semilla en 1
y el algoritmo generador en Mersenne Twister.
rng(1,"twister");
Luego, cree un arreglo de números aleatorios.
A = rand(3,3)
A = 0.4170 0.3023 0.1863 0.7203 0.1468 0.3456 0.0001 0.0923 0.3968
Repita el mismo comando.
A = rand(3,3)
A = 0.5388 0.2045 0.6705 0.4192 0.8781 0.4173 0.6852 0.0274 0.5587
La primera llamada a rand
cambió el estado del generador, así que el segundo resultado es diferente.
Ahora reinicialice el generador con la misma semilla y algoritmo que antes. Luego reproduzca la primera matriz A
.
rng(1,"twister");
A = rand(3,3)
A = 0.4170 0.3023 0.1863 0.7203 0.1468 0.3456 0.0001 0.0923 0.3968
Establezca la semilla y el tipo de generador juntos cuando quiera:
Garantizar que el comportamiento del código que escriba hoy devolverá los mismos resultados cuando lo ejecute en una futura versión de MATLAB®.
Garantizar que el comportamiento del código que escribió en una versión anterior de MATLAB devuelve los mismos resultados en la versión actual.
Repetir números aleatorios en su código después de ejecutar el código de números aleatorios de otra persona.
Consulte la página de página de referencia de rng
para obtener una lista de los generadores disponibles.
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.
Guardar y restaurar la configuración de los generadores
Este ejemplo muestra cómo crear arreglos de números aleatorios repetibles guardando y restaurando la configuración de los generadores. La razón más habitual para guardar y restaurar la configuración de los generadores es reproducir los números aleatorios generados en un punto específico en un algoritmo o iteración. Por ejemplo, puede utilizar la configuración de un generador como ayuda al depurar. A diferencia de volver a establecer la semilla, lo que reinicia el generador, este enfoque le permite guardar y restaurar la configuración del generador en cualquier momento.
Primero, inicie el generador de números aleatorios para hacer que los resultados de este ejemplo sean repetibles.
rng(1,"twister");
Cree un arreglo de números aleatorios entre 1 y 10.
A = randi(10,3,3)
A = 3×3 5 4 2 8 2 4 1 1 4
La primera llamada a randi
cambió el estado del generador. Guarde la configuración del generador después de la primera llamada a randi
en una estructura s
.
s = rng;
Cree otro arreglo de valores enteros aleatorios entre 1 y 10.
A = randi(10,3,3)
A = 3×3 6 3 7 5 9 5 7 1 6
Ahora, devuelva el generador al estado previo almacenado en s
y reproduzca el segundo arreglo A
.
rng(s); A = randi(10,3,3)
A = 3×3 6 3 7 5 9 5 7 1 6