Salta al contenuto
Note per Studenti Esercizio - Tre persone con lo stesso compleanno e due scelte nel bilanciamento

Esercizio - Tre persone con lo stesso compleanno e due scelte nel bilanciamento

Teoria: Palline e urne - compleanno, carico massimo e approssimazione di PoissonModello palline e urne (m palline, n urne, scelte indipendenti e uniformi): paradosso del compleanno con soglia sqrt(2 n ln 2), urne vuote attese n e^(-m/n), carico massimo ln n / ln ln n con dimostrazione (first moment e union bound), approssimazione di Poisson con il fattore e sqrt(m), potere delle due scelte (ln ln n / ln 2).Palline e urne - compleanno, carico massimo e approssimazione di Poisson → (soglia del compleanno per le terne, potere delle due scelte), Linearità del valore atteso e variabili indicatriciLa linearità $E[X+Y]=E[X]+E[Y]$ vale sempre, anche senza indipendenza; con le variabili indicatrici ($E[I_A]=P(A)$) trasforma un conteggio in una somma di probabilità. Applicazioni: attesa del primo successo $1/p$, collezionista di figurine $nH_n$, punti fissi di una permutazione (media $1$), record (media $H_n$), inversioni ($n(n-1)/4$), attesa condizionata, identità di Wald $E[S_N]=E[N]E[X]$.Linearità del valore atteso e variabili indicatrici →.

Testo.

  1. Con n=365n=365 giorni, quante persone servono perché il numero atteso di terne con lo stesso compleanno sia almeno 12\frac12? E almeno 11? Confrontare con la formula 61/3n2/36^{1/3}n^{2/3}.
  2. Calcolare la probabilità esatta che tra mm persone almeno tre abbiano lo stesso compleanno e trovare il minimo mm per cui supera 12\frac12. (Suggerimento: contare le assegnazioni in cui ogni giorno ha al più 22 persone con la funzione generatrice esponenziale (1+x+x22)365(1+x+\frac{x^2}2)^{365}.)
  3. Confrontare il carico massimo di nn palline in nn urne con una scelta e con due scelte (la pallina va nell'urna meno carica fra due estratte a caso) per n=103,104,105n=10^3,10^4,10^5, con una simulazione.

Soluzione

1. Terne attese. Le terne di persone sono (m3)\binom m3, e ognuna ha lo stesso compleanno con probabilità 1n2\frac1{n^2} (la seconda e la terza persona devono coincidere con la prima: 1n⋅1n\frac1n\cdot\frac1n). Per la linearità E[#terne]=(m3)13652E[\#\text{terne}]=\binom m3\frac1{365^2}:

mm 8080 8585 8888 9090
(m3)/3652\binom m3/365^2 0,6170{,}617 0,7410{,}741 0,8240{,}824 0,8820{,}882

Il valore 12\frac12 si raggiunge a m=75\boxed{m=75} ((743)=64 824\binom{74}3=64\,824 dà 0,4870{,}487, (753)=67 525\binom{75}3=67\,525 dà 0,5070{,}507; 3652=133 225365^2=133\,225). Il valore 11 richiede (m3)≥133 225\binom m3\ge133\,225, cioè m=94m=94 ((933)=129 766\binom{93}3=129\,766 dà 0,9740{,}974, (943)=134 044\binom{94}3=134\,044 dà 1,0061{,}006). La formula approssimata (m3)≈m36=n2⇒m=61/3n2/3=1,817⋅51,09=92,8\binom m3\approx\frac{m^3}6=n^2\Rightarrow m=6^{1/3}n^{2/3}=1{,}817\cdot51{,}09=92{,}8 per il valore 11.

2. Probabilità esatta. Se mm persone si distribuiscono sui nn giorni, il numero di assegnazioni (persone distinguibili) in cui ogni giorno ha 00, 11 o 22 persone è m! [xm](1+x+x22)nm!\,[x^m]\bigl(1+x+\frac{x^2}2\bigr)^n: ogni giorno contribuisce ∑j≤2xjj!\sum_{j\le2}\frac{x^j}{j!} (funzione generatrice esponenziale). Quindi P(nessuna terna)=m! [xm](1+x+x2/2)365365m.P(\text{nessuna terna})=\frac{m!\,[x^m](1+x+x^2/2)^{365}}{365^m}. Il coefficiente si calcola moltiplicando il polinomio per se stesso 365365 volte, troncando al grado mm. Risultati:

mm 8080 8585 8787 8888 8989 9090
P(almeno una terna)P(\text{almeno una terna}) 0,41820{,}4182 0,47620{,}4762 0,49950{,}4995 0,51110{,}5111 0,52260{,}5226 0,53420{,}5342

Il minimo è m=88\boxed{m=88} (con m=87m=87 si ha 0,499450{,}49945, appena sotto 12\frac12; l'enumerazione con frazioni esatte per m=88m=88 dà 0,511070{,}51107). Quindi per le terne servono 8888 persone, contro le 2323 delle coppie: la soglia cresce come n2/3n^{2/3} anziché n1/2n^{1/2}. Si noti che a m=88m=88 il numero atteso di terne è 0,820{,}82, non 11: la probabilità di almeno una terna (0,510{,}51) è molto inferiore al valore atteso, perché le terne sono molto sovrapposte.

3. Una scelta contro due scelte. Frequenze osservate del carico massimo (100 prove per n=103,104n=10^3,10^4, 30 per n=105n=10^5):

nn una scelta due scelte
10310^3 44:1, 55:53, 66:38, 77:8 33:100
10410^4 55:1, 66:51, 77:43, 88:5 33:96, 44:4
10510^5 77:8, 88:18, 99:4 33:17, 44:13

Con una scelta il massimo cresce come ln⁡n/ln⁡ln⁡n\ln n/\ln\ln n (3,6; 4,1; 4,73{,}6;\ 4{,}1;\ 4{,}7 nei tre casi, con costanti più grandi); con due scelte resta fra 33 e 44, in accordo con ln⁡ln⁡nln⁡2+O(1)\frac{\ln\ln n}{\ln2}+O(1) (2,8; 3,2; 3,52{,}8;\ 3{,}2;\ 3{,}5 più una costante). Il costo è una seconda scelta casuale e un confronto per ogni pallina.

Codice di verifica

python
import random
import numpy as np
from math import comb, lgamma, log, exp

def p_terna(m, n=365):
    """P(almeno 3 con lo stesso giorno) = 1 - m! [x^m](1+x+x^2/2)^n / n^m."""
    poly = np.zeros(m + 1); poly[0] = 1.0
    for _ in range(n):                    # moltiplica per (1 + x + x^2/2), troncando al grado m
        nuovo = poly.copy()
        nuovo[1:] += poly[:-1]
        nuovo[2:] += 0.5 * poly[:-2]
        poly = nuovo
    return 1 - exp(log(poly[m]) + lgamma(m + 1) - m * log(n))

print([round(comb(m, 3) / 365 ** 2, 3) for m in (75, 80, 85, 88, 90, 94)])
print([round(p_terna(m), 4) for m in (80, 85, 87, 88, 89, 90)])

def massimo(n, d):
    c = [0] * n
    for _ in range(n):
        i = min((random.randrange(n) for _ in range(d)), key=lambda j: c[j])
        c[i] += 1                         # nell'urna meno carica fra le d estratte
    return max(c)

random.seed(3)
for n in (10 ** 3, 10 ** 4):
    print(n, sorted(set(massimo(n, 1) for _ in range(20))), sorted(set(massimo(n, 2) for _ in range(20))))

Risultato: [0.507, 0.617, 0.741, 0.824, 0.882, 1.006], poi [0.4182, 0.4762, 0.4995, 0.5111, 0.5226, 0.5342] e, per n=103n=10^3 e n=104n=10^4, due righe con i massimi osservati in 20 prove (cambiano a ogni esecuzione: con una scelta tra 55 e 88, con due scelte tra 33 e 44), ad esempio 1000 [5, 6] [3, 4] e 10000 [6, 7, 8] [3, 4].

Versione ripasso

Teoria collegata