Paradosso dei compleanni

Paradosso dei compleanni

Considerate un gruppo di nn persone. Qual è la probabilità che ce ne siamo almeno due che abbiano lo stesso compleanno? E la probabilità che ce ne sia almeno una che abbia il vostro stesso compleanno?

Soluzione

La richiesta è di studiare le probabilità di due eventi differenti, che corrispondono ai seguenti risultati:

P(in un gruppo di n persone almeno due hanno lo stesso compleanno)=1365!(365n)!365nP(in un gruppo di n persone almenoun’altra ha il tuo stesso compleanno)=1(364365)n \begin{align*} \mathbb{P} \begin{pmatrix} \text{in un gruppo di $n$ persone almeno }\\\text{due hanno lo stesso compleanno} \end{pmatrix}&= 1-\frac{365!}{(365-n)!365^n}\\ \mathbb{P}\begin{pmatrix} \text{in un gruppo di $n$ persone almeno}\\\text{un'altra ha \textit{il tuo} stesso compleanno} \end{pmatrix}&= 1-\left(\frac{364}{365}\right)^n \end{align*}

Questo problema è noto come "paradosso dei compleanni" perché per la prima probabilità si arriva al 50% già con solo 23 persone, che in effetti sembrano molte poche. L'idea, qui riassunta ma ampiamente trattata nel video, è quindi di capire intanto come si ricavano quei valori, e poi come come interpretarli, per sciogliere il dubbio della loro apparente controintuitività (se esiste come termine).

Riguardo al primo, studiare l'evento "almeno due persone condividano il compleanno" è complicato, perché il chiedere "almeno due" comprende molti casi: esattamente due, esattamente tre, esattamente quattro, ecc. Per semplificare il calcolo, l'idea è di passare a studiare l'evento complementare di quello indicato, ovvero ricavare la probabilità che a noi interessa come 1 meno la probabilità che nessuna persona condivida il compleanno con nessun'altra. Questo secondo evento corrisponde al caso di avere nn persone che abbiano tutte il compleanno in giorni diversi. La probabilità che questo accada la si può trovare col metodo che si impara fin dalle elementari di casi favorevoli diviso casi totali, dove

Possiamo quindi assemblare ora tutto e, sistemando un attimo i calcoli, si arriva alla forma riportata in (1).

La seconda probabilità si calcola con un ragionamento simile, e in questo caso con il passaggio al complementare dobbiamo calcolare 1 meno la probabilità che "nessuna persona abbia il mio stesso compleanno". Questo equivale a trovare la probabilità che tutte le persone abbiano un compleanno diverso dal mio, quindi avremo che

E quindi ancora, assemblando tutto, si arriva a 1(364/365)n1-(364/365)^n.


Nel caso della prima probabilità si raggiunge davvero l'1, ovvero la certezza che si realizzi l'evento, solo con 366 persone, naturalmente, per il principio della piccionaia. Solo in questo modo, infatti, avremo che di sicuro le date di compleanno di almeno due persone andranno a coincidere. I valori di "uno" prima del caso n=366n=366, presenti nel plot che ora segue, sono quindi solo dovuti ad approssimazioni del grafico (che non riporta tutti i decimali) che diventano poi approssimazioni numeriche (in cui cioè i calcoli saturano la precisione disponibile per la rappresentazione dei numeri decimali in un computer) da 295 persone in poi.

Uno scorcio dei valori precisi calcolati dal codice sarebbe quindi il seguente:

# qui il grafico smette di riportare sufficienti decimali
n=80: 0.9999143319493134946903219036781801337436248827650357978945842589451803561427634
n=81: 0.9999331085083680711965527193103598304573509358576306915067301747928120589059932
n=82: 0.9999479529215795403282766363949101146572264815988140175011270401127633554227453
⋮
n=258: 0.9999999999999999999999999999999999999999999999999999998264153107735258302391866
n=259: 0.9999999999999999999999999999999999999999999999999999999491135294596363392755936
n=260: 0.999999999999999999999999999999999999999999999999999999985222011295127265652638
⋮
n=293: 0.9999999999999999999999999999999999999999999999999999999999999999999999999999309
n=294: 0.9999999999999999999999999999999999999999999999999999999999999999999999999999827
# qui proprio il codice satura la precisione numerica disponibile
n=295: 1.0

Riporto infine il codice che genera i plot finali dell'andamento delle due probabilità.

using Plots

p1(n) = 1 - factorial(big(365)) / (factorial(big(365-n)) * big(365)^n)
p1_values = p1.(1:365)
plot(p1_values,title="p1 values")

p2(n) = 1 - (big(364/365)^n)
p2_values = p2.(1:2000)
plot(p2_values,title="p2 values")

Last modified: May 01, 2025. Website built with Franklin.jl and the lovely Julia programming language.