Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Generar números aleatorios que sean repetibles

Especificar la semilla

Este ejemplo muestra cómo repetir arreglos de números aleatorios especificando primero la semilla. Cada vez que inicie el generador con la misma semilla, siempre obtendrá el mismo resultado.

Primero, inicie el generador de números aleatorios para hacer que los resultados de este ejemplo sean repetibles.

rng('default');

Ahora, inicie el generador con una semilla de 1.

rng(1);

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 reinicie el generador con la misma semilla que antes. Luego reproduzca la primera matriz A.

rng(1);
A = rand(3,3)
A =

    0.4170    0.3023    0.1863
    0.7203    0.1468    0.3456
    0.0001    0.0923    0.3968

En ciertos casos, establecer solo la semilla no garantiza los mismos resultados. Esto se debe a que el generador del que se extraen las funciones de números aleatorios podría ser diferente al esperado cuando se ejecuta el código. Para una repetibilidad a largo plazo, especifique la semilla y el tipo de generador juntos.

Por ejemplo, el siguiente código establece la semilla en 1 y el generador en Mersenne twister.

rng(1,'twister');

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.

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