SUPERCAT.DEV

Benvenut* sul mio blog

MATH

10 - Dieci lanci, esattamente tre 6: dalla combinatoria alla distribuzione binomiale

21-08-2026

Probabilità e combinatoria nei giochi

Nel precedente articolo abbiamo calcolato la probabilità di trovare esattamente due assi in una mano di cinque carte.

Lì il mazzo cambiava dopo ogni estrazione: una carta pescata non poteva ricomparire e quindi le prove non erano indipendenti.

Ora cambiamo completamente esperimento.

Lanciamo un dado equo dieci volte e chiediamoci:

Qual è la probabilità di ottenere esattamente tre 6?

Ogni lancio riparte nelle stesse condizioni. La probabilità di ottenere un 6 rimane sempre:

$$ 1/6 $$

e quella di non ottenere 6 rimane sempre:

$$ 5/6 $$

Questa volta quindi il modello è basato su prove indipendenti con probabilità di successo costante.

È esattamente la situazione dalla quale nasce la distribuzione binomiale.

Prima una sequenza specifica

Supponiamo di voler ottenere questa sequenza:

6 6 6 x x x x x x x

dove x significa qualunque risultato diverso da 6.

La probabilità dei primi tre successi è:

$$ (1/6)^3 $$

La probabilità dei sette insuccessi è:

$$ (5/6)^7 $$

Poiché i dieci lanci sono indipendenti, moltiplichiamo:

$$ (1/6)^3 \cdot (5/6)^7 $$

Questa è però la probabilità di una sola disposizione dei tre successi.

La domanda chiedeva esattamente tre 6 in qualunque posizione.

I tre 6 possono stare in posizioni diverse

Una sequenza come:

6 6 6 x x x x x x x

va bene.

Ma anche:

x 6 x 6 x x 6 x x x

contiene esattamente tre 6.

Dobbiamo quindi scegliere quali tre delle dieci posizioni contengono il successo.

L'ordine delle posizioni scelte non conta: scegliere le posizioni 2, 5, 9 descrive lo stesso schema indipendentemente dall'ordine in cui elenchiamo quei numeri.

Perciò usiamo una combinazione:

C(10,3)
=
120

Esistono quindi 120 modi diversi di collocare tre successi tra dieci lanci.

Mettiamo insieme i due pezzi

Ogni schema con esattamente tre 6 ha probabilità:

$$ (1/6)^3 \cdot (5/6)^7 $$

e gli schemi possibili sono:

C(10,3)
=
120

Quindi:

P(esattamente 3 sei)
=
C(10,3)
·
(1/6)^3
·
(5/6)^7

Il valore è circa:

15,5045%

Questa formula non è ancora "la binomiale" come oggetto da memorizzare. È soltanto il prodotto di due idee che conosciamo già: scegliere le posizioni dei successi e moltiplicare le probabilità di successi e insuccessi.

Lo stesso calcolo contando direttamente le sequenze del dado

Dieci lanci di un dado producono:

6^10
=
60.466.176

sequenze ordinate equiprobabili.

Vogliamo contare quante contengono esattamente tre 6.

Prima scegliamo le tre posizioni dei 6:

C(10,3)
=
120

Nelle altre sette posizioni possiamo usare soltanto:

1 2 3 4 5

Per ciascuna posizione abbiamo quindi 5 possibilità:

5^7
=
78.125

I casi favorevoli sono:

120 · 78.125
=
9.375.000

Quindi:

P
=
9.375.000
-----------
60.466.176

che coincide esattamente con:

$$ \begin{gathered} \binom{10}{3} \ \cdot \ (1/6)^3 \ \cdot \ (5/6)^7 \end{gathered} $$

Conteggio combinatorio e prodotto probabilistico stanno ancora descrivendo lo stesso spazio campionario.

Da dove nasce la formula generale

Supponiamo di avere n prove indipendenti.

Ogni prova può produrre successo con probabilità p, oppure insuccesso con probabilità 1-p.

Vogliamo esattamente x successi.

Per scegliere le posizioni dei successi abbiamo:

$$ \binom{n}{x} $$

possibilità.

Una specifica disposizione di x successi e n-x insuccessi ha probabilità:

$$ p^x \cdot (1-p)^{n-x} $$

Quindi:

P(X=x)
=
C(n,x)
·
p^x
·
(1-p)^(n-x)

Questa è la distribuzione binomiale.

Nel nostro problema:

$$ \begin{gathered} n = 10 \ x = 3 \ p = 1/6 \end{gathered} $$

e ritroviamo esattamente il calcolo precedente.

Quando il modello binomiale è appropriato

La formula funziona perché il nostro esperimento possiede quattro caratteristiche precise: abbiamo un numero fissato di prove, ogni prova viene classificata come successo o insuccesso rispetto alla domanda, la probabilità di successo rimane costante e le prove sono indipendenti.

Il dado ha sei facce, ma per la domanda corrente lo stiamo riducendo a due soli esiti logici:

6

oppure:

non 6

La distribuzione binomiale non richiede quindi che l'esperimento fisico abbia soltanto due risultati possibili. Richiede che, rispetto alla proprietà studiata, ogni prova possa essere classificata in successo o insuccesso.

Perché non è ipergeometrica?

Con gli assi avevamo:

4 assi su 52 carte

e ogni carta estratta modificava il contenuto del mazzo.

La probabilità di successo cambiava.

Con il dado invece, dopo un 6, il lancio successivo continua ad avere:

$$ P(6) = 1/6 $$

Il dado non perde una faccia.

Quindi:

carte senza reinserimento
→ ipergeometrica

lanci indipendenti con p costante
→ binomiale

La differenza non è nella presenza di combinazioni: entrambe le distribuzioni usano coefficienti combinatori. La differenza è nel modello delle prove.

"Esattamente tre" non significa "almeno tre"

La nostra formula conta:

$$ X = 3 $$

e non comprende sequenze con quattro, cinque o più 6.

Per calcolare:

P(almeno 3 sei)

dovremmo invece sommare:

P(X=3)
+
P(X=4)
+
...
+
P(X=10)

Oppure potremmo usare il complementare:

1
-
P(X=0)
-
P(X=1)
-
P(X=2)

La tecnica del complementare introdotta negli articoli iniziali continua quindi a essere utile anche dopo aver introdotto distribuzioni più avanzate.

Perché compare il triangolo di Pascal

I coefficienti binomiali non sono numeri isolati. Sono organizzati nel triangolo di Pascal:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...

La regola che costruisce ogni riga dalla precedente è:

$$ \binom{n}{k}

\binom{n-1}{k-1} + \binom{n-1}{k}. $$

Questa identità, spesso chiamata regola o lemma di Pascal, ha una spiegazione di conteggio molto semplice.

Vogliamo scegliere k posizioni di successo fra n posizioni. Guardiamo soltanto l'ultima posizione.

Ci sono due casi incompatibili:

  1. l'ultima posizione è un successo: dobbiamo scegliere gli altri k-1 successi fra le prime n-1 posizioni;
  2. l'ultima posizione è un insuccesso: dobbiamo scegliere tutti i k successi fra le prime n-1 posizioni.

Quindi:

$$ \underbrace{\binom{n}{k}}_{\text{tutti gli schemi}}

\underbrace{\binom{n-1}{k-1}}{\text{ultima posizione = successo}} + \underbrace{\binom{n-1}{k}}{\text{ultima posizione = insuccesso}}. $$

Per esempio:

$$ \binom{5}{2}

\binom{4}{1} + \binom{4}{2}

4+6

$$

Il triangolo di Pascal non è quindi soltanto una tabella da ricordare: registra una decomposizione naturale degli stessi oggetti che stiamo contando nella distribuzione binomiale.

Fonte didattica di approfondimento: Brian Hopkins, Hands-On Combinatorics, cap. 2, che costruisce il triangolo di Pascal raggruppando oggetti combinatori e dimostra la ricorrenza tramite una corrispondenza concreta.

L'intera distribuzione

Con dieci lanci possiamo avere da 0 a 10 successi.

Per ogni x:

P(X=x)
=
C(10,x)
·
(1/6)^x
·
(5/6)^(10-x)

Le probabilità di tutti questi casi devono sommare a:

1

perché coprono tutte le possibilità e sono incompatibili tra loro.

Questa è una verifica importante della distribuzione.

Il numero medio di 6 atteso

Per una variabile binomiale:

X ~ Binomiale(n,p)

il valore atteso è:

$$ E[X] = n \cdot p $$

Nel nostro caso:

E[X]
=
10 · 1/6
=
5/3
≈
1,667

Questo non significa che in dieci lanci vedremo 1,667 volte il numero 6. Il numero effettivo di 6 è sempre un intero.

1,667 è la media teorica che emergerebbe su moltissimi gruppi di dieci lanci.

Il valore atteso verrà approfondito più avanti nella serie, ma qui è utile vedere che una distribuzione non descrive soltanto la probabilità di un singolo valore.

Il calcolo in C#

Lo standalone C# associato a questo articolo è:

DieciLanciTreSei.cs

Possiamo implementare direttamente la formula binomiale.

using System.Numerics;

static BigInteger Combinazioni(int n, int k)
{
    if (n < 0)
        throw new ArgumentOutOfRangeException(nameof(n));

    if (k < 0 || k > n)
        return BigInteger.Zero;

    k = Math.Min(k, n - k);

    BigInteger risultato = BigInteger.One;

    for (int i = 1; i <= k; i++)
    {
        risultato *= n - k + i;
        risultato /= i;
    }

    return risultato;
}

static double Binomiale(
    int prove,
    int successi,
    double probabilitaSuccesso)
{
    if (prove < 0)
        throw new ArgumentOutOfRangeException(nameof(prove));

    if (successi < 0 || successi > prove)
        return 0.0;

    if (probabilitaSuccesso < 0.0 ||
        probabilitaSuccesso > 1.0)
    {
        throw new ArgumentOutOfRangeException(
            nameof(probabilitaSuccesso));
    }

    BigInteger modi =
        Combinazioni(prove, successi);

    return
        (double)modi
        *
        Math.Pow(probabilitaSuccesso, successi)
        *
        Math.Pow(
            1.0 - probabilitaSuccesso,
            prove - successi);
}

Per dieci lanci e tre 6:

double p = Binomiale(
    prove: 10,
    successi: 3,
    probabilitaSuccesso: 1.0 / 6.0);

Console.WriteLine($"{p:P6}");

otteniamo circa:

15,5045%

Manteniamo anche un conteggio esatto

Nel nostro caso possiamo conservare un rapporto intero esatto prima di convertire in double.

BigInteger posizioni =
    Combinazioni(10, 3);

BigInteger favorevoli =
    posizioni
    * BigInteger.Pow(5, 7);

BigInteger totali =
    BigInteger.Pow(6, 10);

Console.WriteLine($"Favorevoli: {favorevoli}");
Console.WriteLine($"Totali:     {totali}");

Otteniamo:

Favorevoli: 9375000
Totali:     60466176

Questo rende visibile il collegamento tra conteggio degli esiti e formula probabilistica.

Verifichiamo che la distribuzione sommi a 1

Possiamo calcolare tutte le probabilità:

double somma = 0.0;

for (int successi = 0;
     successi <= 10;
     successi++)
{
    double p = Binomiale(
        10,
        successi,
        1.0 / 6.0);

    somma += p;

    Console.WriteLine(
        $"{successi,2} sei -> {p:P6}");
}

Console.WriteLine($"Somma: {somma:F12}");

Il risultato sarà molto vicino a:

1.000000000000

Le eventuali differenze nelle ultime cifre dipendono dalla rappresentazione floating-point.

Monte Carlo come verifica empirica

Enumerare tutte le:

$$ 6^{10} = 60.466.176 $$

sequenze dei dieci dadi sarebbe possibile con un programma ottimizzato, ma non è necessario per verificare un risultato che abbiamo già ottenuto esattamente.

Qui Monte Carlo è più interessante come confronto tra teoria e frequenza osservata.

static double Simula(
    int esperimenti,
    int seed = 42)
{
    if (esperimenti <= 0)
        throw new ArgumentOutOfRangeException(nameof(esperimenti));

    var random = new Random(seed);
    int favorevoli = 0;

    for (int e = 0; e < esperimenti; e++)
    {
        int sei = 0;

        for (int lancio = 0; lancio < 10; lancio++)
        {
            if (random.Next(1, 7) == 6)
                sei++;
        }

        if (sei == 3)
            favorevoli++;
    }

    return (double)favorevoli / esperimenti;
}

Con un milione di esperimenti la frequenza osservata dovrebbe risultare vicina al valore teorico:

15,5045%

ma non identica.

La formula rimane il risultato esatto del modello; la simulazione produce una stima.

Una seconda lettura del coefficiente C(10,3)

Il coefficiente:

$$ \binom{10}{3} $$

può essere interpretato anche come numero di stringhe di lunghezza 10 contenenti tre successi e sette insuccessi.

Per esempio:

SSSIIIIIII
SISIISIIII
IIISISIIIS

dove:

S = successo
I = insuccesso

Tutti questi schemi hanno la stessa probabilità se p rimane costante a ogni prova.

È proprio questa uguaglianza di probabilità tra schemi con lo stesso numero di successi che permette di moltiplicare C(n,x) per la probabilità di uno schema specifico.

Il punto pratico

Per ottenere esattamente tre 6 in dieci lanci dobbiamo risolvere due problemi distinti.

Prima scegliamo dove si trovano i tre successi:

C(10,3)
=
120

Poi calcoliamo la probabilità di una specifica disposizione di tre successi e sette insuccessi:

$$ (1/6)^3 \cdot (5/6)^7 $$

Quindi:

P(X=3)
=
C(10,3)
·
(1/6)^3
·
(5/6)^7
≈
15,5045%

Generalizzando:

P(X=x)
=
C(n,x)
·
p^x
·
(1-p)^(n-x)

Questa è la distribuzione binomiale.

Il confronto con l'ipergeometrica è il punto da ricordare: entrambe contano quanti modi producono x successi, ma la binomiale descrive prove indipendenti con probabilità costante, mentre l'ipergeometrica descrive estrazioni da una popolazione finita senza reinserimento.

Nel prossimo articolo cambieremo ancora tipo di problema.

Pescheremo una sola carta e chiederemo:

Qual è la probabilità che sia di cuori oppure una figura?

I due eventi si sovrappongono, quindi non potremo semplicemente sommare i loro casi favorevoli.

Questo ci porterà al principio di inclusione-esclusione.