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.
- Con giorni, quante persone servono perché il numero atteso di terne con lo stesso compleanno sia almeno ? E almeno ? Confrontare con la formula .
- Calcolare la probabilità esatta che tra persone almeno tre abbiano lo stesso compleanno e trovare il minimo per cui supera . (Suggerimento: contare le assegnazioni in cui ogni giorno ha al più persone con la funzione generatrice esponenziale .)
- Confrontare il carico massimo di palline in urne con una scelta e con due scelte (la pallina va nell'urna meno carica fra due estratte a caso) per , con una simulazione.
Soluzione
1. Terne attese. Le terne di persone sono , e ognuna ha lo stesso compleanno con probabilità (la seconda e la terza persona devono coincidere con la prima: ). Per la linearità :
Il valore si raggiunge a ( dà , dà ; ). Il valore richiede , cioè ( dà , dà ). La formula approssimata per il valore .
2. Probabilità esatta. Se persone si distribuiscono sui giorni, il numero di assegnazioni (persone distinguibili) in cui ogni giorno ha , o persone è : ogni giorno contribuisce (funzione generatrice esponenziale). Quindi Il coefficiente si calcola moltiplicando il polinomio per se stesso volte, troncando al grado . Risultati:
Il minimo è (con si ha , appena sotto ; l'enumerazione con frazioni esatte per dà ). Quindi per le terne servono persone, contro le delle coppie: la soglia cresce come anziché . Si noti che a il numero atteso di terne è , non : la probabilità di almeno una terna () è 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 , 30 per ):
| una scelta | due scelte | |
|---|---|---|
| :1, :53, :38, :8 | :100 | |
| :1, :51, :43, :5 | :96, :4 | |
| :8, :18, :4 | :17, :13 |
Con una scelta il massimo cresce come ( nei tre casi, con costanti più grandi); con due scelte resta fra e , in accordo con ( più una costante). Il costo è una seconda scelta casuale e un confronto per ogni pallina.
Codice di verifica
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 e , due righe con i massimi osservati in 20 prove (cambiano a ogni esecuzione: con una scelta tra e , con due scelte tra e ), ad esempio 1000 [5, 6] [3, 4] e 10000 [6, 7, 8] [3, 4].
Versione ripasso
- Terne attese. (una terna coincide con probabilità ): a , a , a ; formula per il valore (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 →).
- Probabilità esatta. (funzione generatrice esponenziale: ogni giorno ha , o persone). Almeno una terna: per ; soglia a , contro per le coppie ( invece di ).
- Probabilità e valore atteso. A le terne attese sono ma : eventi sovrapposti.
- Due scelte. Pallina nell'urna meno carica fra due a caso: massimo - per contro - con una scelta ( contro ), come in 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 →.
- Errori tipici. Credere che equivalga a ; usare ; dimenticare che in due scelte la pallina va nell'urna meno carica, non in una a caso.