Contenido principal

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.

¿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 a rand, randn, randi o randperm. 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
Los valores de 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

Consulte también