SUPERCAT.DEV

Benvenut* sul mio blog

MATH

23 - Ventitre persone bastano: il paradosso dei compleanni

04-09-2026

Probabilità e combinatoria nei giochi — Estensioni operative

Entriamo in una stanza con:

23 persone

e facciamo una domanda apparentemente innocua:

Qual è la probabilità che almeno due siano nate nello stesso giorno dell'anno?

Ci sono:

365 giorni

quindi l'intuizione tende a suggerire che 23 persone siano troppo poche.

Ventitré è appena:

6,3%

di 365.

Eppure la probabilità di almeno un compleanno condiviso è già superiore al:

50%

Il punto non è memorizzare il numero 23.

È capire perché la nostra intuizione sta contando il problema sbagliato.

Lo spunto del libro

In Maîtriser l'incertain, Mathieu Agelou usa proprio il paradosso dei compleanni come esempio della distanza tra ciò che ci sembra casuale e ciò che la probabilità produce davvero.

Il libro pone la domanda:

qual è il numero minimo di persone
per cui la probabilità di almeno un compleanno condiviso
supera il 50%?

e indica:

23

Agelou osserva anche che tendiamo spontaneamente a immaginare date distribuite in modo troppo regolare durante l'anno.

Ora ricostruiamo il risultato passo per passo.

Prima del calcolo: quanto avresti risposto?

Codenotti e Resta introducono il problema richiamando una discussione nel romanzo Polvere di Luna di Arthur C. Clarke. Il valore didattico dell'aneddoto è soprattutto questo: costringe a fare una previsione prima di vedere il risultato.

Nel modello ideale che useremo qui:

23 persone -> probabilità di almeno una coppia > 50%
36 persone -> circa 83,2%
57 persone -> oltre 99%
70 persone -> oltre 99,9%

La sorpresa nasce perché l'intuizione tende a confrontare 23 direttamente con 365, mentre il problema confronta fra loro tutte le coppie di persone.

Fonte di contesto e soglie: Bruno Codenotti e Giovanni Resta, La logica dell'incertezza, cap. 2. Il valore esatto usato nell'articolo continua a essere calcolato indipendentemente.

Prima fissiamo il modello

Per mantenere il problema pulito assumiamo:

365 giorni

ignoriamo il:

29 febbraio

e consideriamo tutti i giorni dell'anno:

equiprobabili

Assumiamo inoltre che i compleanni delle persone siano:

indipendenti

Queste sono semplificazioni del modello.

Nella popolazione reale le nascite non sono perfettamente uniformi durante l'anno.

Ma il celebre risultato 23 appartiene proprio a questo modello ideale.

Perché contare direttamente le coincidenze è scomodo

Con 23 persone potremmo avere:

una coppia con lo stesso compleanno
due coppie diverse
tre persone nello stesso giorno
una tripletta più un'altra coppia
...

Contare direttamente tutti i modi in cui può verificarsi:

almeno una coincidenza

diventa rapidamente scomodo.

Abbiamo già incontrato più volte una strategia migliore:

calcoliamo il contrario.

L'evento complementare di:

almeno due condividono il compleanno

è:

tutti hanno compleanni diversi

Questa seconda frase è molto più facile da contare.

Una persona

Con una sola persona non possiamo avere coincidenze.

La prima persona può avere un compleanno qualsiasi:

365/365
=
1

Due persone

Perché abbiano compleanni diversi:

prima persona:
qualunque giorno

seconda persona:
deve evitare il giorno della prima

Quindi:

P(tutti diversi con 2 persone)
=
365/365
·
364/365

Tre persone

La terza deve evitare i due giorni già occupati:

363

giorni disponibili su 365.

Quindi:

P(tutti diversi con 3 persone)
=
365/365
·
364/365
·
363/365

Il pattern è ormai visibile.

n persone

Con n persone:

P(tutti diversi)
=
365/365
·
364/365
·
363/365
·
...
·
(365-n+1)/365

oppure:

P(tutti diversi)
=
∏ da i=0 a n-1
(365-i)/365

La probabilità che almeno due condividano il compleanno è quindi:

P(coincidenza)
=
1
-
P(tutti diversi)

Questo è il complementare che ci serve.

Proviamo con 22 persone

Per 22 persone:

P(coincidenza)
≈
47,57%

Quindi siamo ancora sotto il 50%.

Aggiungiamo una sola persona

Con 23 persone:

P(coincidenza)
≈
50,73%

Abbiamo superato la metà.

Quindi il primo valore per cui:

P(coincidenza) > 50%

è proprio:

23

Non perché 23 sia vicino a metà di 365.

Ma perché stiamo creando molte coppie possibili di persone.

Il numero che l'intuizione trascura: le coppie

Con 23 persone, quante coppie possiamo formare?

C(23,2)
=
23·22/2
=
253

Non stiamo confrontando una singola persona con i 365 giorni.

Abbiamo:

253 coppie

che possono potenzialmente condividere un compleanno.

Questa è la ragione intuitiva per cui la probabilità cresce molto più rapidamente di quanto immaginiamo.

Attenzione però:

$$ 253/365 $$

non è la probabilità di almeno una coincidenza.

Le coppie non costituiscono eventi disgiunti.

Ma il numero 253 spiega bene perché 23 persone generino già molte occasioni di collisione.

Una quantità diversa: il numero medio di coppie coincidenti

Per ogni coppia specifica:

P(stesso compleanno)
=
1/365

Con 253 coppie, il numero atteso di coppie coincidenti è:

253/365
≈
0,693

Questo valore non è:

P(almeno una coincidenza)

che vale circa:

0,507

Sono grandezze diverse.

Una stessa configurazione può infatti contenere più di una coppia coincidente.

È un ottimo esempio del motivo per cui:

valore atteso di un conteggio

e:

probabilità che il conteggio sia almeno 1

non sono la stessa cosa.

Collisione qualsiasi e bersaglio prefissato sono domande diverse

Un'altra distinzione proposta da Codenotti e Resta aiuta a capire il “paradosso”. Con 23 persone possiamo chiedere:

Esiste qualche coppia che condivide il compleanno?

oppure:

Tra queste 23 persone, almeno una ha una data specifica fissata in anticipo, per esempio il mio compleanno?

La prima è una domanda di collisione fra tutte le date osservate e vale circa:

$$ 50{,}73%. $$

Per la seconda, fissata in anticipo una particolare data, ogni persona evita quella data con probabilità 364/365. Quindi:

$$ P(\text{almeno una persona con quella data})

1-\left(\frac{364}{365}\right)^{23} \approx6{,}12%. $$

La differenza è enorme perché nel primo caso non abbiamo deciso in anticipo quale compleanno debba ripetersi: qualunque collisione fra le molte coppie va bene.

Questo schema tornerà quando parleremo di selezione ex post e coincidenze: “un evento preciso” e “qualche evento interessante fra moltissime possibilità” non sono la stessa domanda probabilistica.

Fonte di contesto: Bruno Codenotti e Giovanni Resta, La logica dell'incertezza, cap. 2, sezione sulle collisioni. Il valore 6,12% è ricalcolato dalla formula qui riportata.

Il conteggio combinatorio esatto

Possiamo vedere il problema anche come conteggio di assegnazioni ordinate.

Per 23 persone, ognuna può avere uno dei 365 giorni:

$$ 365^{23} $$

assegnazioni possibili.

Per avere tutti compleanni differenti:

prima persona: 365 possibilità
seconda:        364
terza:          363
...
ventitreesima:  343

Quindi:

assegnazioni senza coincidenze
=
365·364·...·343

Le assegnazioni con almeno una coincidenza sono:

365^23
-
365·364·...·343

e quindi:

P(coincidenza)
=
365^23 - 365·364·...·343
--------------------------
          365^23

È esattamente la stessa probabilità ottenuta con il prodotto dei complementari.

Quanto cresce rapidamente?

Per dare un'idea:

20 persone
→ circa 41,14%

22 persone
→ circa 47,57%

23 persone
→ circa 50,73%

30 persone
→ circa 70,63%

50 persone
→ circa 97,04%

Quindi in una classe abbastanza numerosa la coincidenza non è affatto sorprendente.

È l'assenza totale di coincidenze che diventa rapidamente meno probabile.

Perché il paradosso ci inganna

La domanda:

Qual è la probabilità che qualcuno abbia il mio stesso compleanno?

è molto diversa da:

Qual è la probabilità che qualunque coppia condivida un compleanno?

Nel primo caso, con 22 altre persone, abbiamo soltanto:

22 confronti

contro una data fissata.

Nel secondo caso, con 23 persone, abbiamo:

253 coppie

potenziali.

La nostra intuizione tende spesso a trasformare mentalmente il secondo problema nel primo.

Ed è per questo che una risposta attorno a 180 sembra inizialmente plausibile.

Cerchiamo 23 senza conoscerlo in anticipo

Invece di hard-codare il risultato possiamo farlo trovare al programma.

Partiamo da:

$$ n = 1 $$

e calcoliamo:

P(coincidenza con n persone)

finché:

$$ P > 0,5 $$

Il primo n trovato deve essere:

23

Questo è un buon controllo perché il codice non riceve 23 come dato.

Lo scopre.

C# con double

Lo standalone C# associato a questo articolo è:

ParadossoCompleanni.cs

La versione più semplice aggiorna progressivamente la probabilità che tutti i compleanni siano diversi:

static double ProbabilitaCoincidenza(
    int persone)
{
    if (persone < 0)
        throw new ArgumentOutOfRangeException(
            nameof(persone));

    if (persone > 365)
        return 1.0;

    double tuttiDiversi = 1.0;

    for (int i = 0; i < persone; i++)
    {
        tuttiDiversi *=
            (365.0 - i)
            /
            365.0;
    }

    return
        1.0 - tuttiDiversi;
}

Per:

ProbabilitaCoincidenza(23)

otteniamo circa:

50,7297%

Troviamo automaticamente la soglia

static int PrimaSoglia(
    double soglia)
{
    for (int persone = 1;
         persone <= 366;
         persone++)
    {
        if (ProbabilitaCoincidenza(persone) > soglia)
            return persone;
    }

    throw new InvalidOperationException();
}

Con:

PrimaSoglia(0.5)

il risultato è:

23

Possiamo conservare anche il conteggio esatto

Per 23 persone il numeratore e il denominatore diventano enormi.

Ma C# dispone di:

BigInteger

Possiamo quindi calcolare esattamente:

totale
=
365^23

e:

tutti diversi
=
365·364·...·343

senza perdita di precisione intera.

Solo alla fine convertiamo il rapporto in double per visualizzare la percentuale.

Questo segue lo stesso principio usato negli articoli di combinatoria:

conteggio esatto prima
decimale dopo

Una simulazione sarebbe possibile, ma non necessaria

Potremmo simulare classi da 23 persone:

  1. generare 23 giorni casuali tra 1 e 365;
  2. verificare se compare un duplicato;
  3. ripetere molte volte.

La frequenza dovrebbe avvicinarsi a:

50,73%

Ma qui il calcolo esatto è semplice.

Quindi, coerentemente con il criterio già fissato nel confronto tra calcolo esatto e Monte Carlo:

formula esatta
prima

e Monte Carlo soltanto come eventuale verifica.

Un'approssimazione utile, ma secondaria

Per n non troppo grande rispetto a 365 si incontra anche l'approssimazione:

P(coincidenza)
≈
1
-
exp(
    -n(n-1)
    --------
      2·365
)

Per 23 persone produce un valore vicino al risultato esatto.

È utile per capire l'ordine di grandezza e il legame con il numero di coppie:

$$ n(n-1)/2 $$

ma non ci serve per risolvere il problema.

Il risultato esatto è già pratico da calcolare.

Perché proprio 23 cade quasi sul 50%?

L'approssimazione precedente contiene una piccola sorpresa numerica.

Con 23 persone ci sono:

$$ \binom{23}{2}=253 $$

coppie, quindi l'esponente vale:

$$ \frac{253}{365} \approx 0{,}6931507. $$

Ma:

$$ \ln 2 \approx 0{,}6931472. $$

Sono quasi uguali. Perciò:

$$ 1-e^{-253/365} \approx 1-e^{-\ln 2}

\frac12. $$

Numericamente l'approssimazione dà circa:

$$ 50{,}0002%. $$

Il valore esatto è invece:

$$ 50{,}7297%. $$

Quindi 23 non è un numero magico: emerge perché il numero di coppie è arrivato quasi esattamente a:

$$ 365\ln2. $$

L'approssimazione non sostituisce il calcolo esatto, ma spiega molto bene perché la soglia del 50% compare proprio in quella zona.

Spunto didattico: David J. Hand, Il caso non esiste, sul ruolo del numero di coppie/opportunità nelle coincidenze. I valori dell'approssimazione sono ricalcolati direttamente.

Il punto operativo

Il paradosso dei compleanni non è un trucco.

È una conseguenza di tre idee che abbiamo già costruito nella serie:

complementare
principio del prodotto
combinazioni di coppie

Con n persone:

P(almeno una coincidenza)
=
1
-
∏(365-i)/365

Per:

$$ n = 22 $$

siamo ancora sotto il 50%.

Per:

$$ n = 23 $$

otteniamo circa:

50,73%

Il motivo intuitivo è che 23 persone generano:

253

coppie possibili.

La domanda non confronta 23 persone con 365 giorni: confronta moltissime coppie tra loro.

Nel prossimo articolo resteremo sul problema della nostra intuizione del caso.

Genereremo vere sequenze casuali e misureremo:

alternanze
run
streak
cluster

per capire perché il caso reale produce gruppi e serie molto più spesso di quanto il nostro cervello consideri "casuale".