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 diferentes

Este ejemplo muestra cómo evitar repetir los mismos arreglos de números aleatorios al reiniciar MATLAB®. Esta técnica es útil cuando quiere combinar los resultados de los mismos comandos de números aleatorios ejecutados en distintas sesiones de MATLAB.

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. Así, un comando como rand(2,2) devuelve el mismo resultado cada vez que lo ejecute justo después del inicio. Además, cualquier script o función que llame a las funciones de números aleatorios devuelve el mismo resultado siempre que reinicie.

Una forma de obtener números aleatorios diferentes es iniciar el generador con una semilla diferente cada vez. Hacerlo así le asegura que no repite resultados de una sesión anterior.

Ejecute el comando rng('shuffle') cuando esté en su sesión de MATLAB antes de llamar a ninguna de las funciones de números aleatorios.

rng('shuffle')

Puede ejecutar este comando en una ventana de comandos de MATLAB o puede añadirlo a su archivo de inicio, que es un script especial que MATLAB ejecuta cada vez que reinicia.

Ahora, ejecute un comando de número aleatorio.

A = rand(2,2);

Cada vez que llama a rng('shuffle'), vuelve a establecer una semilla diferente en el generador según la hora actual.

Nota

Volver a alimentar el generador con frecuencia no mejora las propiedades estadísticas de la salida y no hace que sea más aleatoria en ningún sentido real. Volver a alimentar puede ser útil al reiniciar MATLAB o antes de ejecutar un gran cálculo con números aleatorios. Sin embargo, volver a alimentar el generador con demasiada frecuencia en una sesión no es una buena idea porque las propiedades estadísticas de los números aleatorios podrían verse negativamente afectadas.

Alternativamente, especifique semillas diferentes de forma explícita en sesiones de MATLAB diferentes. Por ejemplo, genere números aleatorios en una sesión de MATLAB.

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

Utilice semillas diferentes para generar números aleatorios en otra sesión de MATLAB.

rng(2);
B = rand(2,2);

Los arreglos A y B son diferentes porque el generador se ha iniciado con una semilla diferente antes de cada llamada a la función rand.

Para generar múltiples secuencias independientes que se garantiza que no se superponen, y para las que se han realizado pruebas que demuestran la independencia de los valores entre secuencias, se puede utilizar RandStream.create. Para obtener más información sobre la generación de varias secuencias, consulte Secuencias múltiples.

Consulte también

Temas relacionados