Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página 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.

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

rng(1,'twister');

Guarde la configuración del generador en una estructura s.

s = rng;

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

Repita el mismo comando.

A = randi(10,3,3)
A = 3×3

     6     3     7
     5     9     5
     7     1     6

La primera llamada a randi cambió el estado del generador, así que el segundo resultado es diferente.

Ahora, devuelva el generador a su estado original almacenado en s y reproduzca el primer arreglo A.

rng(s);
A = randi(10,3,3)
A = 3×3

     5     4     2
     8     2     4
     1     1     4

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.

Consulte también

Temas relacionados