Ce n'est pas facile à calculer, mais cela peut être fait, à condition que (m+kk) ne soit pas trop grand. (Ce nombre compte les états possibles que vous devez suivre lors de la collecte des coupons.)
Commençons par une simulation pour avoir une idée de la réponse. Ici, j'ai collecté des millions de figurines LEGO. La ligne noire dans ce graphique suit les fréquences du nombre d'achats nécessaires pour collecter au moins trois des dix chiffres différents.
La bande grise est un intervalle de confiance bilatéral d'environ 95% pour chaque comptage. En dessous, il y a une courbe rouge: c'est la vraie valeur.
Pour obtenir les vraies valeurs, tenez compte de la situation lorsque vous collectez des chiffres, dont il existe types possibles et que vous souhaitez collecter au moins de types différents. La seule information dont vous avez besoin pour garder une trace est le nombre de chiffres que vous n'avez pas vu, le nombre que vous avez vu une seule fois, le nombre que vous avez vu deux fois et le nombre que vous avez vu trois fois ou plus . Nous pouvons représenter cela commodément comme un monôme où les sont les associés, index de à . En général, nous utiliserions des monômes de la formen=12k=3m=10xi00xi11xi22xi33ijk=0k=t∏kj=0xijj .
Lors de la collecte d'un nouvel objet aléatoire, ce sera l'un des objets invisibles avec la probabilité , l'un des objets vus une seule fois avec la probabilité , et ainsi de suite. Le résultat peut être exprimé comme une combinaison linéaire de monômes,i0i0/ni1/n
xi00xi11xi22xi33→1n(i0xi0−10xi1+11xi22xi33+⋯+i3xi00xi11xi2−12xi33).
Ceci est le résultat de l'application de l'opérateur différentiel linéaire au monôme. Evidemment, des applications répétées à l'état initial donneront un polynôme , ayant au plus termes, où le coefficient de est la chance d'être dans l'état indiqué par ses exposants. Il suffit de se concentrer sur les termes en avec : la somme de leurs coefficients sera la chance d'avoir terminé la collecte des coupons. L'ensemble du calcul nécessite donc jusqu'à(x1Dx0+x2Dx1+x3Dx2+x3Dx3)/nx120=xn0p(n+kk)∏kj=0xijjpi3≥t(m+1)(n+kk) calculs faciles à chaque étape, répétés autant de fois que nécessaire pour être presque certain de réussir la collecte.
L'expression de ce processus permet d'exploiter l'efficacité des systèmes d'algèbre informatique. Voici, par exemple, une solution générale de Mathematica pour calculer les chances jusqu'à tirages. Cela omet certaines possibilités, mais leurs chances totales sont inférieures à , ce qui nous donne une image presque complète de la distribution.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];
Le résultat, qui prend environ deux secondes à calculer (plus rapide que la simulation!) Est un tableau de probabilités indexé par le nombre de tirages. Voici un graphique de ses différences, qui sont les probabilités de terminer vos achats en fonction du décompte:
Ce sont précisément les nombres utilisés pour tracer la courbe de fond rouge sur la première figure. (Un test du chi carré indique que la simulation n'est pas significativement différente de ce calcul.)
Nous pouvons estimer le nombre attendu de tirages en additionnant ; le résultat devrait être bon à 14-15 décimales. J'obtenir (qui est correcte dans tous les chiffres, tel que déterminé par un calcul plus long).1−q50.7619549386733