Yogurt e statistica: come fare calcoli anche a colazione

Consumo di yogurt e statistica, scommetto che pochi hanno pensato a questo mix. Invece la mia mente bacata ha partorito anche questo quesito: qual è la probabilità di consumare per due mattine di seguito lo stesso gusto di yogurt, pescando a caso da una confezione di 8 vasetti, a due a due dello stesso gusto?
Breve storia di come non sono ancora riuscito a risolvere il problema.


Yogurt e statistica: l’algoritmo per il consumo

Compro lo yogurt in confezioni risparmio, quelle da 8 vasetti, a due a due di gusti differenti. Esempio: due vasetti al gusto di mirtilli, due per i frutti di bosco, due per la fragola, infine due al gusto di ciliegia.
Sistemo in frigo i vasetti a coppie, ponendo il secondo di ogni gusto rovesciato sul primo. Questa sistemazione ha diversi vantaggi:

  • risparmio spazio;
  • al momento di consumare un vasetto, da rovesciato lo pongo dritto sul tavolo, quindi do modo allo yogurt di assumere una densità più uniforme;
  • ogni coppia diventa anonima, quindi non perdo tempo a scegliere;
  • ma soprattutto evito di consumare due giorni di seguito lo stesso gusto.

Perché il mio problema è tutto qui: mi rompe consumare lo stesso gusto del giorno prima.
La gestione della configurazione è abbastanza semplice, tre regolette in tutto:

  1. prelevo un vasetto del piano superiore, e rovescio il vasetto sottostante;
  2. consumo prima i quattro vasetti del piano superiore, poi passo agli altri quattro;
  3. prelevando il quarto vasetto superiore, non giro subito il vasetto sottostante; questo mi consente al mattino dopo di prelevare un gusto diverso; solo a questo punto rovescio il vasetto.

Non è colpa mia, mi ha rovinato l’Ingegneria sposata all’Informatica.

Yogurt e statistica: il problema

Mi sono chiesto più volte se l’algoritmo fosse giustificato.
La domanda, in soldoni, è questa: ma se disponessi a caso i vasetti (sempre a coppie sovrapposte, per salvare spazio e rendere omogeneo il contenuto) e poi li consumassi in ordine l’uno dopo l’altro, con quale probabilità mi capiterebbero due giorni di seguito con lo stesso gusto? Perché se la probabilità fosse abbastanza elevata, potrei risparmiarmi il tempo speso a sistemare i vasetti a coppie.

Non sono un esperto di statistica, l’ho studiata ma devo sempre utilizzarla con cautela. E dal problema dello yogurt non sono ancora venuto fuori con gli attrezzi statistici che ho.

Ho provato allora a disegnare la tabella delle disposizioni, ma già con 4 vasetti è un lavoro complesso.

1° vasetto 2° vasetto 3° vasetto 4° vasetto
mirtilli mirtilli ciliegia ciliegia
mirtilli ciliegia mirtilli ciliegia
mirtilli ciliegia ciliegia mirtilli
ciliegia mirtilli mirtilli ciliegia
ciliegia mirtilli ciliegia mirtilli
ciliegia ciliegia mirtilli mirtilli

 

In grassetto rosso ho riportato le combinazioni che soddisfano il problema; sono 2 combinazioni su 6. Quindi, disponendo a caso i quattro vasetti mi dovrei aspettare che nel 33% dei casi riuscirei a non consumare lo stesso gusto per due giorni di seguito.

Aggiungendo coppie, il buon senso mi suggerisce che dovrebbe diminuire la probabilità di gusti consecutivi, quindi aumentare la probabilità di non incontrarne. Ma di quanto cambierebbe la probabilità? Poiché il buon senso non ha valore scientifico, per rispondere al mio problema andrebbe compilata la tabella per 8 vasetti.

Quando dovrebbe essere grande la tabella, in questo caso?

Se distinguessi i vasetti dello stesso gusto (esempio: mirtilli_1 e mirtilli_2), nel caso di quattro vasetti dovrei tenere in conto le possibili disposizioni di 4 elementi, pari a 4! = 24.
Le 24 disposizioni sono però raggruppabili quattro a quattro (22, posso scambiare sia i due vasetti di ciliegia che i due di mirtilli), quindi le disposizioni essenziali sono 24 / 4 = 6, come risulta anche dalla tabella.

Nel caso di 8 vasetti, distinguendo i singoli vasetti avrei 8! = 40.320 disposizioni. Questa volta potrei raggruppare le disposizioni 16 a 16 (24, posso scambiare tra loro i due elementi di ciascuna delle 4 coppie). Quindi le disposizioni essenziali sono 40.320 / 16 = 2.520.

Verrebbe una tabella decisamente lunghetta, con tutti i rischi di prendere sviste. E allora non resta che ricorrere a un programmino. Ruby, as usual.


Ruby è un linguaggio di programmazione a oggetti creato nel 1993 dal giapponese Yukihiro Matsumoto. Non è tra i linguaggi più utilizzati, secondo la survey stilata per il 2018 da StackOverflow (10,1% di popolarità), in confronto a linguaggi come Javascript (69,8%) o Python (38,8%). Ma è ragionevolmente semplice da apprendere e consente di scrivere codice molto leggibile.
Per una guida all’installazione e all’uso di Ruby, dà un’occhiata all’articolo Un enigma ferroviario di Henry Dudeney.


Yogurt e statistica: spazio a Ruby

Di seguito un semplice programmino Ruby che, disposizione per disposizione degli 8 vasetti, conta quante volte si arriva alla fine senza trovare coppie dello stesso gusto.

# ---------------------------------
# data una confezione di 4 coppie di vasetti di yogurt, una coppia per gusto,
# se i vasetti vengono consumati scegliendo a caso uno dopo l'altro,
# con quale probabilità capiterà di non consumare consecutivamente
# due vasetti con lo stesso gusto?
#
# by p.p. - Lecco 14 novembre 2018
# ---------------------------------
#
confezione = ["mirtilli", "mirtilli", "ciliegia", "ciliegia", "bosco", "bosco", "fragola", "fragola"]
n_vasetti = confezione.length
serie_ok = 0
n_serie = 0
posizione = Hash.new(0)
gusto = Hash.new(0)
#
confezione.permutation.each do |serie|
	serie.each_index do |i|
		next if serie[i] != serie[i+1]
		serie_ok -= 1
		posizione[i] += 1
		gusto[serie[i]] += 1
		break
	end
	n_serie += 1
	serie_ok += 1
end
print "n.ro di vasetti: ", n_vasetti, "\n"
print serie_ok, " sequenze ok su ", n_serie, ", pari al ", 100*serie_ok/n_serie, "%", ", sequenze nok = ", n_serie - serie_ok, "\n\n"
print "posizione della prima coppia:\n", posizione.sort.to_h, "\n"
print "gusto della prima coppia:\n", gusto.to_h

La logica è abbastanza semplice: per ogni permutazione della confezione da 8 vasetti, si cerca la presenza di due vasetti con lo stesso gusto. Se si arriva lisci alla fine, si annota che la disposizione è ok (serie_ok += 1).

Se, invece, si incappa in una coppia, si tiene traccia del punto in cui è stata trovata e del gusto. Perché raccogliere questi dati? Il secondo serve a confermarmi che il programma fa quello che deve (mi aspetto che non ci siano preferenze di gusto). Il primo potrebbe tornare utile per accendere qualche campanello di attenzione.

Vediamo allora l’esito del programma:

n.ro di vasetti: 8
13824 sequenze ok su 40320, pari al 34%, sequenze nok = 26496

posizione della prima coppia:
{0=>5760, 1=>5760, 2=>4608, 3=>3456, 4=>2688, 5=>2304, 6=>1920}
gusto della prima coppia:
{"mirtilli"=>6624, "bosco"=>6624, "fragola"=>6624, "ciliegia"=>6624}

Il buon senso questa volta si è fatto annebbiare dall’ottimismo. La probabilità di non incontrare coppie con una disposizione a caso degli 8 vasetti è aumentata sì, ma non poi così tanto, passando dal 33% al 34%.
Anzi, dal 33,333…% al 34,2857…%. Nemmeno un punto percentuale!

Ma non demordo

L’obiettivo del mio studio su yogurt e statistica è quello di ricavare una formula che mi dia la probabilità di non pescare due gusti uguali di seguito, date N coppie di vasetti.

Naturalmente può accadere che la soluzione sia semplice e io cieco. Non mi stupirei, a volte basta cambiare prospettiva e la complessità del problema si smonta. Ma non è ancora il mio caso.
L’idea che sto cercando di sviluppare è basata sull’induzione: supponiamo di avere la formula per il caso di 4 vasetti, come si modifica aggiungendo due ulteriori vasetti? E poi altri due?

Yogurt e statistica: aggiungendo due vasetti

L’inserimento iniziale dei due vasetti addizionali porta la configurazione a 6 vasetti. Le disposizioni si ottengono combinando le possibili disposizioni dei due vasetti con tutte quelle possibili con 4 vasetti.

Quindi, indicando con x il nuovo gusto, occorre combinare le 30 disposizioni in figura (ognuna va raddoppiata per la possibilità di scambio fisico tra i due vasetti al gusto x) con le 24 dei primi 4 vasetti.

Le configurazioni con due x di seguito sono 5 x 2, e porteranno ovviamente a consumare due vasetti allo stesso gusto, quale che sia la disposizione degli altri 4 vasetti.
Le altre 10×2 disposizioni, combinate con le disposizioni pulite degli altri 4 vasetti, producono una disposizione pulita.

Ahimè il mio ragionamento si blocca sull’ultima combinazione, quella delle restanti 10×2 con le disposizioni non pulite. Ci saranno casi, infatti, in cui l’aggiunta dei due vasetti interrompe l’unica coppia consecutiva nella disposizione dei 4 vasetti, e casi in cui non la interrompe, oppure ne interrompe una ma c’è l’altra.
E non so da dove tirare fuori la formula per questo caso.

Mentre ci penso, mi faccio uno yogurt. È uscito ciliegia.

Mi chiamo Pasquale Petrosino, radici campane, da un paio d’anni sulle rive del lago di Lecco, dopo moltissimi anni vissuti a Ivrea.
Ho attraversato 40 anni di tecnologia informatica, da quando progettavo hardware maneggiando i primi microprocessori, la memoria si misurava in kByte, e Ethernet era una novità fresca fresca, fino alla comparsa ed esplosione di Internet.
Tre passioni: la Tecnologia, la Matematica per diletto e le mie tre donne: la piccola Luna, Orsella e Valentina.
Potete contattarmi scrivendo a: p.petrosino@inchiostrovirtuale.it

Ti è piaciuto? Condividilo!

Comments are closed.