01 - Probabilità: prima di calcolare, conta gli esiti
12-08-2026
Probabilità e combinatoria nei giochi
MATH
12-08-2026
Probabilità e combinatoria nei giochi
La probabilità viene spesso introdotta con una formula apparentemente semplicissima:
probabilità =
casi favorevoli / casi possibili
È corretta, ma solo dopo aver chiarito che cosa stiamo contando e perché gli esiti che stiamo contando possono essere trattati allo stesso modo.
Questa precisazione sembra quasi pedante finché non si affrontano problemi più complessi. Poi diventa essenziale: carte estratte senza reinserimento, somme di dadi, mani di poker e giochi con regole diverse si risolvono bene solo se lo spazio degli esiti è stato costruito correttamente.
Partiamo quindi dal caso più semplice possibile.
Lanciamo un normale dado a sei facce e chiediamoci:
Qual è la probabilità di ottenere un numero maggiore di 4?
Assumiamo che il dado sia equo. Significa che nessuna faccia è favorita e che ciascuno dei sei risultati ha la stessa probabilità di uscire.
Gli esiti possibili sono:
1 2 3 4 5 6
Questo insieme viene chiamato spazio campionario. Possiamo indicarlo con:
Ω = {1, 2, 3, 4, 5, 6}
L'evento che ci interessa è invece:
A = "esce un numero maggiore di 4"
e contiene soltanto:
A = {5, 6}
Lo spazio campionario contiene quindi 6 esiti elementari, mentre l'evento ne contiene 2.
Poiché il dado è equo e tutti questi esiti sono equiprobabili:
P(A) = 2/6 = 1/3
cioè circa:
33,33%
La formula funziona perché abbiamo contato esiti dello stesso tipo e con la stessa probabilità individuale.
Un evento non è un nuovo risultato del dado. È un insieme di risultati elementari che decidiamo di considerare insieme perché rispondono alla domanda che ci interessa.
Se chiedessimo:
esce un numero pari?
l'evento sarebbe:
{2, 4, 6}
Se chiedessimo:
esce esattamente 3?
l'evento conterrebbe un solo esito:
{3}
La probabilità non cambia il dado. Cambia il modo in cui raggruppiamo i suoi possibili risultati per rispondere a una domanda.
Questa distinzione diventerà molto utile più avanti. Una mano di poker, per esempio, può essere vista come un evento formato da moltissime mani elementari diverse che condividono la stessa proprietà.
Nel dado equo ogni faccia vale:
P(1) = P(2) = ... = P(6) = 1/6
L'evento:
A = {5, 6}
ha quindi probabilità:
P(A)
=
P(5) + P(6)
=
1/6 + 1/6
=
2/6
Il conteggio dei casi favorevoli è quindi una scorciatoia per sommare probabilità tutte uguali.
In generale, la probabilità di un evento discreto è la somma delle probabilità degli esiti elementari che lo compongono:
P(A) = Σ P(esito)
La formula:
P(A) =
numero di esiti favorevoli
---------------------------
numero di esiti possibili
è il caso particolarmente comodo in cui tutti gli esiti elementari hanno la stessa probabilità.
Questa condizione va sempre controllata prima di contare.
Supponiamo ora che il dado non sia equo.
Immaginiamo, solo come esempio, che il 6 esca con probabilità:
P(6) = 0,30
e che ciascuna delle altre cinque facce abbia probabilità:
0,14
Le probabilità sommano correttamente a 1:
5 · 0,14 + 0,30 = 1
La domanda rimane:
Qual è la probabilità di ottenere un numero maggiore di 4?
Gli esiti favorevoli sono ancora:
{5, 6}
ma ora non possiamo fare:
2/6
perché 5 e 6 non hanno la stessa probabilità degli altri risultati.
Dobbiamo sommare le probabilità effettive:
P(A)
=
P(5) + P(6)
=
0,14 + 0,30
=
0,44
quindi:
44%
Lo spazio campionario non è cambiato. Sono cambiate le probabilità associate ai suoi elementi.
Questo è un principio fondamentale per tutta la serie: prima di contare, dobbiamo capire quale modello probabilistico stiamo usando.
C'è un'altra regola semplice che previene molti errori di combinatoria.
Quando scriviamo:
casi favorevoli / casi possibili
numeratore e denominatore devono contare oggetti dello stesso tipo.
Nel nostro esempio contiamo risultati singoli del dado sia sopra sia sotto.
Più avanti, quando parleremo di poker, se al denominatore conteremo mani di cinque carte, anche al numeratore dovremo contare mani di cinque carte. Non potremo confrontare, per esempio, sequenze ordinate al numeratore con mani non ordinate al denominatore.
Molti errori di probabilità non nascono da una formula sbagliata, ma da un conteggio incoerente dello spazio campionario.
Dire:
P(numero > 4) = 1/3
non significa che ogni tre lanci uscirà esattamente una volta 5 oppure 6.
Potremmo lanciare tre volte e ottenere:
1 2 4
quindi nessun successo.
Oppure:
5 6 6
quindi tre successi.
La probabilità descrive il modello del singolo esperimento e, quando ripetiamo molte volte prove nelle stesse condizioni, determina il comportamento di lungo periodo delle frequenze.
Su poche prove la casualità può produrre oscillazioni molto grandi. Aumentando il numero di lanci, la frequenza relativa tende invece a stabilizzarsi vicino alla probabilità teorica.
È proprio ciò che possiamo osservare con una simulazione.
Per eseguire l’esempio standalone associato a questo articolo, dalla radice del repository:
dotnet run .\examples\M1.1\DadoEquiprobabile.cs
Per il dado equo possiamo lasciare che sia il programma a enumerare gli esiti e a contare quelli favorevoli.
static double ProbabilitaEquiprobabile(
int[] esiti,
Func<int, bool> evento)
{
if (esiti.Length == 0)
throw new ArgumentException(
"Lo spazio campionario non può essere vuoto.");
int favorevoli = 0;
foreach (int esito in esiti)
{
if (evento(esito))
favorevoli++;
}
return (double)favorevoli / esiti.Length;
}
int[] dado = { 1, 2, 3, 4, 5, 6 };
double probabilita = ProbabilitaEquiprobabile(
dado,
risultato => risultato > 4);
Console.WriteLine($"{probabilita:P2}");
Il risultato è:
33,33%
Il programma non sta simulando alcun lancio. Sta facendo esattamente ciò che abbiamo fatto a mano: costruisce lo spazio campionario, conta gli esiti che soddisfano l'evento e divide per il numero totale di esiti.
Per questo il risultato è esatto, a parte la rappresentazione decimale usata per stamparlo.
Possiamo confrontare il risultato teorico con una simulazione Monte Carlo.
static double SimulaDado(
int numeroLanci,
Func<int, bool> evento,
int seed = 42)
{
if (numeroLanci <= 0)
throw new ArgumentOutOfRangeException(nameof(numeroLanci));
var random = new Random(seed);
int favorevoli = 0;
for (int i = 0; i < numeroLanci; i++)
{
int risultato = random.Next(1, 7);
if (evento(risultato))
favorevoli++;
}
return (double)favorevoli / numeroLanci;
}
foreach (int numeroLanci in new[] { 100, 10_000, 1_000_000 })
{
double osservata = SimulaDado(
numeroLanci,
risultato => risultato > 4);
Console.WriteLine(
$"{numeroLanci,10:N0} lanci -> {osservata:P4}");
}
Con 100 lanci il valore osservato può essere sensibilmente diverso da:
33,33%
Con 10.000 tende normalmente ad avvicinarsi. Con un milione di prove ci aspettiamo una frequenza ancora più vicina alla probabilità teorica.
"Più vicina" non significa che la sequenza debba migliorare in modo monotono a ogni aumento del numero di prove, né che la frequenza diventi esattamente 1/3. Una simulazione rimane casuale.
Il seed fisso serve soltanto a rendere ripetibile l'esempio nello stesso ambiente di esecuzione; non trasforma i numeri pseudo-casuali in una dimostrazione matematica.
Il calcolo:
2/6 = 1/3
ci dice qual è la probabilità prevista dal modello di dado equo.
La simulazione ci mostra invece quale frequenza otteniamo in una particolare sequenza finita di lanci generati dal programma.
Sono collegate, ma non sono la stessa cosa.
Una simulazione con un milione di prove non dimostra che la probabilità sia 1/3. Potrebbe soltanto fornire una stima molto convincente.
La dimostrazione, in questo problema, viene dal modello: sei facce equiprobabili, due delle quali soddisfano l'evento.
Questo criterio accompagnerà tutta la serie. Quando il calcolo esatto è accessibile, partiremo da quello; useremo Monte Carlo per verificare, visualizzare oppure affrontare situazioni nelle quali l'enumerazione completa diventa scomoda.
Prendiamo un mazzo standard di 52 carte correttamente mescolato e peschiamone una.
Se chiediamo:
Qual è la probabilità che sia un asso?
abbiamo 52 carte equiprobabili e 4 assi.
Quindi:
P(asso)
=
4/52
=
1/13
≈
7,69%
Non abbiamo bisogno di una nuova teoria. Abbiamo soltanto cambiato spazio campionario.
Questo è uno dei motivi per cui vale la pena capire bene il primo esempio con il dado: la stessa struttura logica tornerà continuamente, anche quando i conteggi diventeranno molto più grandi.
Prima di cercare una formula probabilistica conviene fermarsi e fare tre domande, senza trasformarle in una procedura meccanica: quali sono gli esiti elementari del mio esperimento, qual è l'evento che sto cercando e questi esiti sono davvero equiprobabili?
Nel dado equo la risposta rende immediato il calcolo:
Ω = {1,2,3,4,5,6}
A = {5,6}
P(A) = 2/6 = 1/3
Ma il valore di questo esempio non è il risultato 1/3. È il metodo.
Nei prossimi articoli lo spazio degli esiti diventerà più interessante. Con due dadi scopriremo, per esempio, che le possibili somme non sono equiprobabili, anche se i 36 risultati formati dalle due facce lo sono.
Ed è proprio da quella differenza che nascerà il passo successivo: imparare a contare correttamente gli esiti composti.