lunedì 3 settembre 2012

Una misteriosa costante matematica — 1

Una nota marca di merendine per la prima colazione inserisce, in ogni scatola, una figurina di un matematico famoso. Il produttore sostiene che tutti i matematici sono distribuiti uniformemente, e che la serie completa è composta da 8 figurine (siamo solo alla prima edizione). Quante scatole ci aspettiamo di dover comprare per completare la collezione?

(Spoiler alert: se volete provare a risolverlo da soli, non andate oltre, tornate dopo)

Possiamo risolvere il quesito ragionando in questo modo: acquistando la prima scatola ci assicuriamo la prima figurina, fin qua è facile. Con la seconda scatola possiamo trovarci di fronte a due possibilità: siamo sfortunati e troviamo la figurina che abbiamo già, oppure siamo fortunati e troviamo una figurina che ci manca. Il primo caso si verifica con probabilità 1/8, il secondo invece con probabilità 7/8.

Dato che la probabilità di ottenere una nuova figurina è 7/8, dovremmo acquistare 8/7 di scatola per ottenerla.

«Certo, andiamo in negozio, prendiamo una scatola e poi seghiamo un pezzettino di un'altra scatola».

«Ma no, questo è un discorso di media, è chiaro che per avere la figurina o compri una scatola e sei fortunato, o sei meno fortunato e ne devi comprare due, o ancora meno fortunato e ne devi comprare tre, quattro, o di più».

«E allora cos'è questa faccenda degli 8/7 di scatola?».

«Significa che, se prendiamo tanti collezionisti, e facciamo la media sul numero di scatole che servono per ottenere due figurine, il risultato sarà vicino a 1+8/7 (più collezionisti ci sono, migliore sarà l'approssimazione)».

«Vabbé. E quindi, se vogliamo la terza figurina, dobbiamo ragionare allo stesso modo?».

«Sì, la terza figurina sarà diversa dalle prime due con probabilità 6/8, e quindi dovrai comprare 8/6 di scatola».

«Sempre in media».

«Certo. Poi ce ne vorranno 8/5, 8/4, e così via fino a 8/1».

«Quindi per ottenere l'ultima figurina devo comprare otto scatole?».

«Sì, hai una sola possibilità su otto di trovare quella giusta, quindi ti toccherà acquistarne proprio otto».

«Ho capito. Il risultato finale allora sarà 1+8/7+8/6+…+8/2+8/1. Cioè…».

«761/35».

«Eh, fammi fare il calcolo che capisco meglio… fa 21.7, circa».

«Quindi con 22 scatole hai buone probabilità di cavertela».

«Però, risulta quasi il triplo del numero iniziale. Comincio a capire come funzionano le raccolte di figurine».

«Eh, sì, pensa a quante figurine può contenere un album di calciatori, e fai qualche conto…».

«La regola per il calcolo mi sembra semplice».

«Sì, e se modifichi un po' la formula diventa ancora più chiara. Per esempio, nella formula che abbiamo usato per le otto figurine, prova a raccogliere a fattor comune tutti quegli otto che stanno al numeratore».

«Mi viene 8(1/8+1/7+1/6+…+1/2+1). Mh, mi ricorda qualcosa».

«Se li riordini, ti accorgerai che si tratta dei primi termini della serie armonica: 8(1+1/2+1/3+…+1/7+1/8), di cui si è già parlato in passato, anche in qualche vecchio Carnevale della Matematica [1][2]».

«Uh, vedo».

«Ti faccio vedere anche cosa significa che in media bisogna acquistare 21.7 scatole: ho scritto un programma che simula duemila collezionisti di figurine. Ognuno fa i suoi acquisti fino a che non ha ottenuto le otto figurine, poi alla fine viene fatta la media tra tutti. Eccolo qua:».

from random import randrange

N=8

#nella lista ci vanno i numeri da 0 a 7

def colleziona():

  conta=0
  lista=[]
  while 1:
    x=randrange(N)
    conta+=1
    if x not in lista:
      lista+=[x]
    if len(lista)==8:
      break

  return conta


media=0
for i in xrange(2000):
  media+=colleziona()
  #print float(media)/(i+1)

print "Media:", float(media)/2000


«Mi pare abbastanza chiaro».

«Ho fatto anche un paio di grafici per vedere che, all'aumentare del numero dei collezionisti, il valore medio si stabilizza sempre più verso il famoso 21.7».




«E come mai sono diversi?».

«Perché ogni prova è diversa dalle altre. La cosa importante è vedere che l'andamento si stabilizza, anche se nel secondo grafico si stabilizza più lentamente».

«Probabilmente 2000 prove sono ancora poche».

«Già. Devi pensare che 21.7 scatole sono, appunto, una media, ma ci possono essere collezionisti fortunati che se la cavano con 8 scatole e altri meno fortunati che ne devono acquistare ben più di 22. Anzi, mi basta aggiungere un paio di righe al programma per vedere qual è il record negativo di acquisto scatole:».

media=0
record=0
for i in xrange(2000):
  m=colleziona()
  if record < m:
    record = m
  media+=m
  print float(media)/(i+1)

print "Media:", float(media)/2000,record

«Ah, certo, così tieni in memoria il valore massimo di scatole da acquistare: quanto risulta?».

«Faccio girare il programma: ecco, 72».

«Però, sfortunato quel poveraccio che deve acquistare 72 scatole».

«Eh, già. E pensa a quelli che collezionano figurine di calciatori: nella collezione dell'anno scorso c'erano 690 figurine».

«Quante?!».

«Più altre 29 con un codice strano: in tutto 719».

«Santo cielo! Ma bisogna acquistarne un numero colossale».

«Quante?».

«Eh, mi tocca fare una somma lunghissima, non c'è un metodo migliore?».

«Se ti accontenti di un risultato approssimato (approssimato molto bene, eh), c'è».

2 commenti:

Anonimo ha detto...

Salve, sempre molto interessanti i post. Non ho capito bene (sono un po' arrugginito) il passaggio dalla probabilità di 7/8 all'acquisto di 8/7 di scatola, me lo può spiegare meglio?

Poi sarebbe interessante sapere cosa ne pensate dei volumi in distribuzione in edicola in questi giorni, il primo è sulla sezione aurea, se li avete provati e se li consigliate.

Grazie,
medeoTL

zar ha detto...

Eh, se hai probabilità 7/8 di trovare quello che cerchi, una sola scatola non basta. Per trovare quello che cerchi devi comprare n scatole, in modo tale che n*7/8 diventi 1. Quindi n=8/7.

Esempio più facile: se lanciando una moneta hai probabilità 1/2 di vincere, vuol dire che vincerai (in media) un lancio ogni due. Cioè hai bisogno di fare 2 lanci per vincere (l'inverso di 1/2)