lettura normale

Le distribuzioni di probabilità per generare numeri random su Matlab

In questa lezione ti spiego come usare le distribuzioni di probabilità per generare dei numeri casuali.

Perché cambiare distribuzione? Matlab ti permette di generare dei numeri random usando diverse distribuzioni di probabilità (esponenziale, normale, Poisson, gamma). La scelta della distribuzione dipende da quello che vuoi simulare. Alcuni fenomeni reali sono simulati meglio con una distribuzione piuttosto che un'altra.

Ti faccio qualche esempio pratico.

Genera un numero pseudocasuale con la funzione rand() o randi()

>> rand(1)

In questi casi Matlab utilizza di default la distribuzione uniforme in cui tutti i valori sono uniformemente distribuiti tra tutti i valori possibili.

Ad esempio, genera una matrice 100x100 con valori casuali compresi tra 0 e 1 e assegna la matrice alla variabile x

Questo comando genera diecimila valori casuali.

>> x=rand(100);

Ora visualizza il grafico della distribuzione dei valori tramite un istogramma usando la funzione hist()

>> hist(x)

I valori casuali che hai appena generato sono equamente distribuiti tra 0 e 1

la distribuzione dei valori casuali

Nota. Nel diagramma l'asse orizzontale indica i valori casuali da 0 a 1 ossia il range dei valori possibili. L'asse verticale invece misura la frequenza con cui i valori si ripetono. Più o meno la frequenza è la stessa per ogni valore.

Se utilizzi altre distribuzioni di probabilità il risultato è molto diverso.

La distribuzione esponenziale

Per generare dei numeri casuali usando la distribuzione esponenziale devi usare la funzione exprnd()

>> exprnd(1)
ans = 0.90844

Ad esempio, digita exprnd(1,3,2) per generare una matrice 3x2 con valori casuali tramite la distribuzione esponenziale usando come valore medio 1.

>> exprnd(1,3,2)
ans =
1.09340 0.28265
0.10781 1.72641
0.20653 0.87235

Cosa cambia rispetto alla distribuzione uniforme?

Per capirlo genera una matrice causale 100x100 usando la funzione exprnd()

>> x=exprnd(1,100,100);

Poi visualizza i valori casuali che hai appena generato tramite un istogramma delle frequenze tramite la funzione hist()

>> hist(x)

Nella distribuzione esponenziale i valori casuali sono concentrati all'inizio dell'intervallo dei valori possibili.

la distribuzione esponenziale

In questo caso i valori vicini allo zero o al valore iniziale dell'intervallo sono molto più frequenti.

La frequenza si riduce in modo esponenziale nei valori più alti.

La distribuzione normale

Per generare dei numeri casuali usando la la distribuzione normale usa la funzione randn()

>> randn(1)
ans = 0.85251

Ad esempio, digita randn(2,3) per creare una matrice casuale 2x3

>> randn(2,3)
ans =
-0.32674 2.24641 -0.19528
-0.37856 0.13721 0.41417

Ora genera una matrice 100x100 di valori casuali usando la distribuzione normale.

>> x=randn(100);

Poi visualizza l'istogramma delle frequenze dei valori casuali tramite la funzione hist()

>> hist(x)

Nella distribuzione normale i valori più frequenti sono quelli centrali nell'intervallo dei valori possibili.

la distribuzione normale

La frequenza dei valori casuali si riduce man mano che ci si allontana dallo zero sia a destra che a sinistra.

La distribuzione normale è caratterizzata da una forma a campana.

La distribuzione Poisson

Per generare dei numeri casuali con la distribuzione Poisson utilizza la funzione poissrnd()

>> poissrnd(1)
ans = 3

La distribuzione Poisson genera i numeri casuali intorno a un valore medio.

Esempio. Quando il parametro della funzione poissrnd(1) è uguale a 1, la funzione genera numeri random in una distribuzione di Poisson con media uguale a 1.

Ad esempio, digita poissrnd(5,2,3) per creare una matrice casuale 2x3 composta da valori casuali intorno al valore medio 5.

>> poissrnd(5,2,3)
ans =
3 7 6
5 2 2

Ora genera una matrice casuale 100x100 di valori casuali intorno al valore medio uguale a 5.

>> x=poissrnd(5,100,100)

Poi visualizza l'istogramma delle frequenze tramite la funzione hist()

>> hist(x)

Nella distribuzione di Poisson i valori casuali si concentrano soprattutto intorno al valore medio 5.

come funziona la distribuzione di Poisson

La distribuzione gamma

Per generare dei numeri casuali tramite la distribuzione gamma utilizza il comando randg()

>> randg(1)
ans = 2.5621

Ad esempio, digita randg(100,2,3) per produrre una matrice 2x3 casuale intorno al valore 100

>> randg(100,2,3)
ans =
101.843 98.346 87.956
93.809 99.350 93.122

Ora genera una matrice casuale 100x100 con la distribuzione gamma intorno al valore centrale 5

>> x = randg(5,100,100)

Poi visualizza l'istogramma delle frequenze tramite la funzione hist()

>> hist(x)

Nella distribuzione gamma i valori vicini al valore centrale sono quelli più frequenti.

la distribuzione gamma

In questo modo puoi generare numeri casuali su Matlab usando diverse distribuzioni di probabilità.

Puoi usare queste funzioni per generare singoli valori random, vettori oppure matrici composte da valori random.

 




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




FacebookTwitterLinkedinLinkedin