Distribuzione Normale NumPy

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.

Corsi correlati

Design Pattern per videogiochi

I Design Pattern sono soluzioni a problemi comuni che si incontrano nello sviluppo del software. Nel contesto dei videogiochi, questi pattern possono aiutare a gestire la complessità crescente dei giochi moderni. Sei appassionato di videogiochi? Hai mai pensato a come vengono progettati e sviluppati? Sei curioso di scoprire i segreti dietro la creazione dei tuoi giochi preferiti? Allora sei nel posto giusto! Questo corso è stato progettato per fornirti una solida comprensione dei Design Pattern, strumenti fondamentali per ogni sviluppatore di giochi. Attraverso esempi pratici e realistici, esploreremo insieme come questi pattern possono aiutarti a creare giochi più efficienti, flessibili e mantenibili.

Corso Fondamenti di Python

Python, uno dei linguaggi di programmazione più popolari al mondo, è ampiamente utilizzato da colossi dell’informatica e della tecnologia come Google, la Nasa e Mozilla.
Questo corso sui fondamenti di Python esplorerà le ragioni del suo successo duraturo. Impareremo la potente ed espressiva sintassi di Python, che consente di ottenere risultati impressionanti con poche righe di codice.

Blender Masterclass 2

I paesaggi, in generale, possono risultare intimidatori data la loro complessità, costituita da numerosi elementi che sembrano formare qualcosa di virtualmente infinito. Durante le lezioni di questo corso, ci concentreremo su una scomposizione delle diverse fasi coinvolte nella creazione di una scena, affrontandole una alla volta attraverso passi graduati.

Blender Masterclass 1

In questo corso di Blender 3D, Masha, in collaborazione con Gedemy, vi mostrerà il processo di modellazione, UV mapping, shading, e texture painting di un asset. Una volta apprese le basi, vedremo anche come effettuare il baking delle textures e la preparazione con successivo export della mesh in modo che possa essere utilizzabile all’interno di un qualsiasi altro software.

Crea il tuo account gratuito Gedemy

Gedemy è la prima piattaforma di formazione italiana che ti permette di sviluppare competenze in ambiti come Game Design, Programming, Arte, 3D, Tech, AI e molto altro.