lettura facile

Come generare la stessa sequenza di numeri casuali su Matlab

In questa lezione ti spiego come ottenere la stessa sequenza di valori casuali (random) su Matlab.

Perché generare gli stessi numeri casuali? La generazione dei numeri casuali si basa su un algoritmo che estrae una lista di numeri pseudocasuali a partire da un seme secondo una distribuzione statistica. La sequenza di numeri casuali varia in ogni sessione. Tuttavia, a volte è utile lavorare con gli stessi numeri casuali. Ad esempio quando testi un programma.

Per ottenere la stessa sequenza di numeri casuali puoi salvare lo stato della sequenza in una variabile.

>> x=rand("state");

In questo modo puoi impostare lo stato della funzione rand() all'inizio dello script o della sessione tramite la variabile x

>> rand("state",x);

Questo comando Matlab ti permette di avere la stessa sequenza di numeri casuali.

Ti faccio un esempio pratico.

Genera una matrice di numeri interi casuali

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

Ora ricarica in memoria la generazione dei numeri casuali usando la variabile x.

>> rand("state",x);

Poi genera un'altra matrice casuale 3x3

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

Le due matrice sono uguali.

In questo modo puoi generare più volte la stessa sequenza di numeri casuali.

Nota. Per usare la stessa variabile x anche in altre sessioni o altri computer ti consiglio di salvare il contenuto della variabile in un file sul PC e richiamarlo in memoria su Matlab quando avvi una nuova sessione.

Come resettare la sequenza di numeri casuali

Per resettare la sequenza dello stato corrente indica il numero 0 come secondo parametro

Ad esempio,digita rand("state",x) per caricare la sequenza di numeri casuali salvata precedentemente nella variabile x.

>> rand("state",x);

Genera una matrice di numeri interi casuali

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

Ora digita rand("state",0) per resettare la sequenza

>> rand("state",0)

Poi genera una matrice casuale 3x3

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

Il risultato è sempre la stessa matrice




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin