La misma secuencia de números aleatorios en Matlab

En esta clase, les mostraré cómo generar secuencias de números aleatorios consistentes y reproducibles en Matlab.

¿Por qué es importante generar números aleatorios consistentes? La generación de números aleatorios se fundamenta en algoritmos que producen listas de números pseudoaleatorios partiendo de semillas específicas, todo ello siguiendo patrones estadísticos. Es común que estas secuencias varíen en cada sesión, pero hay situaciones, como durante la depuración de un programa, en las que es esencial mantener una constancia en los números aleatorios generados.

Para lograr secuencias de números aleatorios reproducibles, es posible almacenar el estado actual de la secuencia en una variable.

>> x=rand("state");

De esta forma, se establece el estado de la función rand() en el inicio de tu guion o sesión utilizando la variable x.

>> rand("state",x);

Con este comando de Matlab, te aseguras de obtener la misma secuencia de números aleatorios en cada ocasión.

Veamos un ejemplo práctico de esto.

Primero, generemos una matriz de enteros aleatorios.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Después, recargamos la generación de números aleatorios en memoria utilizando la variable x.

>> rand("state",x);

A continuación, generamos otra matriz aleatoria de 3x3.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Observarás que ambas matrices son idénticas.

Así, es posible generar la misma secuencia de números aleatorios en múltiples ocasiones.

Nota: Para emplear la misma variable x en distintas sesiones o en otros equipos, te sugiero guardar el contenido de la variable en un archivo en tu ordenador y cargarlo en la memoria de Matlab al iniciar una nueva sesión.

Reiniciando la Secuencia de Números Aleatorios

Para reiniciar la secuencia al estado actual, utiliza 0 como segundo parámetro.

Por ejemplo, introduce rand("state", x) para cargar la secuencia de números aleatorios previamente guardada en la variable x.

>> rand("state",x);

Generemos una matriz de enteros aleatorios.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Y ahora, al teclear rand("state", 0), reseteamos la secuencia.

>> rand("state",0)

Finalmente, generamos una nueva matriz aleatoria de 3x3.

>> randi(3,3)
ans =
1 3 1
1 2 3
1 2 3

Verás que el resultado es idéntico cada vez.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Números aleatorios en Matlab