Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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. A partir de la versión R2023b, puede establecer la semilla y algoritmo predeterminados en las preferencias de MATLAB. 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

Consulte también

Temas relacionados