La distribuzione normale in NumPy è uno degli strumenti più utilizzati quando si lavora con dati statistici, simulazioni, machine learning e test numerici. Se stai iniziando a usare Python per l’analisi dei dati, capire come generare valori casuali con una distribuzione gaussiana è un passaggio molto utile.
In NumPy, la distribuzione normale viene usata per simulare fenomeni in cui i valori tendono a concentrarsi attorno a una media. È il classico modello “a campana”, molto comune in statistica. La funzione più nota per questo scopo è np.random.normal(), che permette di ottenere numeri casuali distribuiti secondo una media e una deviazione standard specificate.
Come generare campioni con la distribuzione normale in NumPy
Per iniziare, devi importare NumPy e usare la funzione dedicata alla generazione di valori casuali gaussiani. I parametri principali sono tre: media, deviazione standard e dimensione del campione. In pratica, puoi decidere attorno a quale valore si concentreranno i dati, quanto saranno dispersi e quanti numeri vuoi ottenere.
Ecco un primo esempio molto semplice:
import numpy as np
campioni = np.random.normal(
loc=0,
scale=1,
size=10
)
print(campioni)
In questo caso,
loc=0
indica la media,
scale=1
rappresenta la deviazione standard e
size=10
definisce il numero di campioni generati. Otterrai quindi 10 valori casuali distribuiti attorno allo zero.
Se vuoi simulare un insieme più realistico di dati, puoi aumentare il numero dei campioni. Più il campione è grande, più la forma generale tenderà ad assomigliare alla classica curva normale.
import numpy as np
campioni = np.random.normal(
loc=50,
scale=5,
size=1000
)
print(campioni[:20])
Qui stiamo generando 1000 valori con media 50 e deviazione standard 5. Questo approccio è molto usato, per esempio, per simulare punteggi, misurazioni, tempi di risposta o altri dati che oscillano attorno a un valore centrale.
Un aspetto importante da ricordare è che i risultati cambiano a ogni esecuzione, perché si tratta di numeri casuali. Se però vuoi ottenere sempre lo stesso output, ad esempio per fare test o per seguire un tutorial, puoi impostare un seme casuale con
np.random.seed()
.
import numpy as np
np.random.seed(42)
campioni = np.random.normal(
loc=10,
scale=2,
size=5
)
print(campioni)
Questo dettaglio è molto utile quando vuoi riprodurre un esperimento o confrontare risultati in modo coerente.
Analizzare i campioni generati con la distribuzione normale
Dopo aver creato i dati, il passo successivo è l’analisi dei campioni. Anche se NumPy nasce come libreria numerica, offre tutto il necessario per calcolare rapidamente alcune statistiche di base. Le più comuni sono la media, la deviazione standard, il valore minimo e il valore massimo.
Vediamo un esempio pratico:
import numpy as np
campioni = np.random.normal(
loc=100,
scale=15,
size=1000
)
media = np.mean(campioni)
deviazione = np.std(campioni)
minimo = np.min(campioni)
massimo = np.max(campioni)
print("Media:", media)
print("Deviazione standard:", deviazione)
print("Minimo:", minimo)
print("Massimo:", massimo)
Con poche righe puoi capire subito se i valori generati sono coerenti con i parametri iniziali. In generale, la media calcolata sarà vicina al valore indicato in
loc
, mentre la deviazione standard osservata sarà simile al valore passato in
scale
. Non saranno sempre identici, ma nei campioni grandi la differenza tende a ridursi.
Se vuoi fare un controllo ancora più concreto, puoi contare quanti valori cadono entro un certo intervallo attorno alla media. Questa è una buona maniera per prendere familiarità con il comportamento della distribuzione normale.
import numpy as np
campioni = np.random.normal(
loc=0,
scale=1,
size=10000
)
dentro_intervallo = np.sum((campioni >= -1) & (campioni <= 1))
percentuale = dentro_intervallo / len(campioni) * 100
print("Valori tra -1 e 1:", percentuale, "%")
In una distribuzione normale standard, una quota consistente dei valori cade entro una deviazione standard dalla media. Fare questo tipo di verifica aiuta a collegare la teoria alla pratica, soprattutto se stai imparando e vuoi vedere con i tuoi occhi come si comportano i dati.
Un altro uso concreto riguarda la preparazione di dati sintetici per esercizi, test di algoritmi e dimostrazioni. In molti casi, creare dati artificiali con
np.random.normal()
è più rapido che cercare dataset reali, specialmente nelle fasi iniziali di studio o prototipazione.
Conclusione sulla distribuzione normale con NumPy
La distribuzione normale NumPy è uno strumento semplice da usare ma estremamente potente. Ti consente di generare dati casuali realistici, simulare scenari statistici e verificare rapidamente il comportamento di un campione. Per chi è alle prime armi, rappresenta un ottimo punto di partenza per comprendere meglio sia NumPy sia alcuni concetti fondamentali della statistica applicata.
Il punto chiave è ricordare la struttura della funzione
np.random.normal(loc, scale, size)
: scegli la media, imposti la dispersione dei valori e definisci quanti campioni vuoi ottenere. Da lì puoi passare all’analisi con strumenti come
np.mean()
e
np.std()
, costruendo una base solida per progetti più avanzati.
Se il tuo obiettivo è imparare davvero a usare NumPy con sicurezza, esercitarti con la distribuzione normale è una delle strade più efficaci. È un argomento pratico, trasversale e ricco di applicazioni concrete, perfetto per costruire familiarità con il calcolo numerico in Python.