Gibt es eine Formel für eine allgemeine Form des Couponsammlerproblems?

10

Ich stolperte über das Problem der Couponsammler und versuchte, eine Formel für eine Verallgemeinerung auszuarbeiten.

Wenn es verschiedene Objekte gibt und Sie mindestens Kopien von jedem von (wo ) sammeln möchten, wie hoch ist die Erwartung, wie viele zufällige Objekte Sie kaufen sollten? Das normale Couponsammlerproblem hat und .NkmmNm=Nk=1

Es gibt 12 verschiedene LEGO Figuren in einer Sammlung. Ich möchte 3 Kopien von jeweils 10 (10) Figuren sammeln. Ich kann sie nach dem Zufallsprinzip einzeln kaufen. Mit wie vielen sollte ich rechnen, bevor ich 3 Exemplare von jeweils 10 Exemplaren habe?

Nickponline
quelle
3
Ich erinnere mich nicht, eine Formel für diese bestimmte Verallgemeinerung gesehen zu haben, aber für eine einmalige spezifische Frage wie diese würde ich eher die Simulation verwenden.
Glen_b -State Monica

Antworten:

5

Dies ist nicht einfach zu berechnen, kann aber durchgeführt werden, vorausgesetzt, (m+kk) ist nicht zu groß. (Diese Zahl zählt die möglichen Zustände, die Sie beim Sammeln von Gutscheinen verfolgen müssen.)

Beginnen wir mit einer Simulation , um einen Eindruck von der Antwort zu bekommen. Hier habe ich eine Million Mal LEGO Figuren gesammelt. Die schwarze Linie in diesem Diagramm zeigt die Häufigkeit der Einkäufe an, die erforderlich sind, um mindestens drei von zehn verschiedenen Zahlen zu sammeln.

Zahl

Das graue Band ist ein ungefähr zweiseitiges 95% -Konfidenzintervall für jede Zählung. Darunter befindet sich eine rote Kurve: Dies ist der wahre Wert.

Um die wahren Werte zu erhalten, berücksichtigen Sie den Stand der Dinge, während Sie Zahlen sammeln, von denen es mögliche Typen gibt und Sie mindestens von verschiedenen Typen sammeln möchten . Die einzige Information, die Sie benötigen, um den Überblick zu behalten, ist, wie viele Figuren Sie nicht gesehen haben, wie viele Sie nur einmal gesehen haben, wie viele Sie zweimal gesehen haben und wie viele Sie dreimal oder öfter gesehen haben. Wir können dies bequem als Monom wobei die zugehörigen Zählwerte sind, Indizes von bis . Im Allgemeinen würden wir Monome der Form verwendenn=12k=3m=10x0i0x1i1x2i2x3i3ijk=0k=tj=0kxjij .

Beim Sammeln eines neuen zufälligen Objekts handelt es sich um eines der unsichtbaren Objekte mit der Wahrscheinlichkeit , eines der Objekte, die nur einmal mit der Wahrscheinlichkeit , und so weiter. Das Ergebnis kann als lineare Kombination von Monomen ausgedrückt werden.i0i0/ni1/n

x0i0x1i1x2i2x3i31n(i0x0i01x1i1+1x2i2x3i3++i3x0i0x1i1x2i21x3i3).

Dies ist das Ergebnis der Anwendung des linearen Differentialoperators auf das Monom. Offensichtlich ergeben wiederholte Anwendungen auf den Anfangszustand ein Polynom mit höchstens Termen, wobei der Koeffizient von ist die Chance, in dem durch seine Exponenten angegebenen Zustand zu sein. Wir müssen uns lediglich auf Begriffe in mit : Die Summe ihrer Koeffizienten ist die Chance, die Couponsammlung abgeschlossen zu haben. Die gesamte Berechnung erfordert daher bis zu(x1Dx0+x2Dx1+x3Dx2+x3Dx3)/nx012=x0np(n+kk)j=0kxjijpi3t(m+1)(n+kk) einfache Berechnungen bei jedem Schritt, die so oft wie nötig wiederholt werden, um fast sicher zu sein, dass die Sammlung erfolgreich ist.

Wenn Sie den Prozess auf diese Weise ausdrücken, können Sie die Effizienz von Computeralgebrasystemen nutzen. Hier ist zum Beispiel eine allgemeine Mathematica- Lösung, um die Chancen bis zu Draws zu berechnen . Das lässt einige Möglichkeiten aus, aber ihre Gesamtchancen liegen unter , was uns ein nahezu vollständiges Bild der Verteilung gibt.6nk=2161017

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];

Das Ergebnis, dessen Berechnung etwa zwei Sekunden dauert (schneller als die Simulation!), Ist eine Reihe von Wahrscheinlichkeiten, die durch die Anzahl der Ziehungen indiziert werden. Hier ist eine grafische Darstellung der Unterschiede, bei denen es sich um die Wahrscheinlichkeit handelt, dass Ihre Einkäufe in Abhängigkeit von der Anzahl beendet werden:

Figur 2

Dies sind genau die Zahlen, die zum Zeichnen der roten Hintergrundkurve in der ersten Abbildung verwendet werden. (Ein Chi-Quadrat-Test zeigt an, dass sich die Simulation nicht wesentlich von dieser Berechnung unterscheidet.)

Wir können die erwartete Anzahl von Ziehungen durch Summieren von schätzen ; Das Ergebnis sollte gut 14-15 Dezimalstellen sein. Ich (was in jeder Ziffer korrekt ist, wie durch eine längere Berechnung bestimmt).1q50.7619549386733

whuber
quelle