Non è facile da calcolare, ma può essere fatto, a condizione che (m+kk) non sia troppo grande. (Questo numero conta i possibili stati che devi tenere traccia durante la raccolta dei coupon.)
Cominciamo con una simulazione per avere un'idea della risposta. Qui, ho raccolto figure LEGO un milione di volte. La linea nera in questo diagramma traccia le frequenze del numero di acquisti necessari per raccogliere almeno tre di dieci figure diverse.
La banda grigia è un intervallo di confidenza approssimativo su due lati del 95% per ogni conteggio. Al di sotto di tutto c'è una curva rossa: questo è il vero valore.
Per ottenere i valori veri, considera lo stato delle cose mentre stai raccogliendo figure, di cui ci sono tipi possibili e desideri raccogliere almeno di tipi diversi. Le uniche informazioni di cui hai bisogno per tenere traccia sono quante figure non hai visto, quante ne hai viste solo una volta, quante ne hai viste due volte e quante ne hai viste tre o più volte. Possiamo rappresentarlo convenientemente come un monomiale dove sono i conteggi associati, indici da a . In generale, utilizzeremmo i monomi del modulon=12k=3m=10xi00xi11xi22xi33ijk=0k=t∏kj=0xijj .
Dopo aver raccolto un nuovo oggetto casuale, sarà uno degli oggetti invisibili con probabilità , uno degli oggetti visti solo una volta con probabilità , e così via. Il risultato può essere espresso come una combinazione lineare di monomi,i0i0/ni1/n
xi00xi11xi22xi33→1n(i0xi0−10xi1+11xi22xi33+⋯+i3xi00xi11xi2−12xi33).
Questo è il risultato dell'applicazione dell'operatore differenziale lineare al monomiale. Evidentemente, ripetute applicazioni allo stato iniziale daranno un polinomio , con al massimo termini, dove il coefficiente di è la possibilità di trovarsi nello stato indicato dai suoi esponenti. Dobbiamo semplicemente concentrarci sui termini in con : la somma dei loro coefficienti sarà la possibilità di aver finito la raccolta dei coupon. Pertanto, l'intero calcolo richiede fino a(x1Dx0+x2Dx1+x3Dx2+x3Dx3)/nx120=xn0p(n+kk)∏kj=0xijjpi3≥t(m+1)(n+kk) facili calcoli ad ogni passaggio, ripetuti tutte le volte necessarie per essere quasi certi di riuscire con la raccolta.
Esprimere il processo in questo modo consente di sfruttare l'efficienza dei sistemi di algebra del computer. Ecco, ad esempio, una soluzione generale di Mathematica per calcolare le possibilità fino a 6 pareggi. Ciò omette alcune possibilità, ma le loro possibilità totali sono inferiori a , dandoci un quadro quasi completo della distribuzione.6nk=21610−17
n = 12;
threshold = 10;
k = 3;
(* Draw one object randomly from an urn with `n` of them *)
draw[p_] :=
Expand[Sum[Subscript[x, i] D[#, Subscript[x, i - 1]], {i, 1, k}] +
Subscript[x, k] D[#, Subscript[x, k]] & @ p];
(* Find the chance that we have collected at least `k` each of `threshold` objects *)
f[p_] := Sum[
Coefficient[p, Subscript[x, k]^t] /.
Table[Subscript[x, i] -> 1, {i, 0, k - 1}], {t, threshold, n}]
(* Compute the chances for a long series of draws *)
q = f /@ NestList[draw[#]/n &, Subscript[x, 0]^n, 6 n k];
Il risultato, che richiede circa due secondi per il calcolo (più veloce della simulazione!) È una serie di probabilità indicizzate dal numero di pareggi. Ecco una trama delle sue differenze, che sono le probabilità di terminare i tuoi acquisti in funzione del conteggio:
Questi sono precisamente i numeri usati per disegnare la curva di sfondo rossa nella prima figura. (Un test chi-quadrato indica che la simulazione non è significativamente diversa da questo calcolo.)
Possiamo stimare il numero atteso di pareggi sommando ; il risultato dovrebbe essere buono con 14-15 decimali. Ottengo (che è corretto in ogni cifra, come determinato mediante un calcolo più lungo).1−q50.7619549386733