Olimpiadi Italiane di Statistica 2011 E.M. – 2
Qual è la probabilità che in una classe di 25 alunni, almeno due compiano gli anni lo stesso giorno?
Con formula
La probabilità con 25 persone è superiore al 50%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import matplotlib.pyplot as plt PERSONE=25 ANNO=365 pNo =(PERSONE+1)*[0] pSì =(PERSONE+1)*[0] pNo[0]=1 pSì[0]=0 pNo[1]=1 pSì[1]=0 for n in range(2, PERSONE+1): pNo[n] = pNo[n-1]*(ANNO-(n-1))/ANNO pSì[n] = 1-pNo[n] for n in range(0, PERSONE+1): print("%2i %f %f" %(n, pNo[n],pSì[n])) N=range(0, PERSONE+1) plt.grid() plt.plot(N,pNo) plt.plot(N,pSì) plt.legend(["No", "Sì"]) plt.title("Compleanni coincidenti") plt.xlabel("Numero persone") plt.ylabel("Probabilità") #--------------------------------------- plt.show() |
Aumentando il numero di persone a 60 si può notare che la probabilità è molto vicina al 100%
Metodo probabilistico
Genera 25 giorni di nascita casuali e controlla se ci sono coincidenze…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import random # randint() INCONTRI=1000 # Numero di incontri PERSONE =25 # Numero di persone presenti coincidenze=0 for incontro in range(INCONTRI): giorni=set() # Insieme vuoto for compleanno in range(PERSONE): giorno=random.randint(1, 365) # Un giorno a caso (da 1 a 365) giorni.add(giorno) # Aggiunto all'insieme dei giorni if(len(giorni) < PERSONE): # Se i giorni sono meno delle PERSONE coincidenze += 1 freq=coincidenze/INCONTRI # Frequenza -> probabilità print(freq) |