Dies ist ein Zählproblem: Es gibt mögliche Zuordnungen von Geburtstagen zu Personen. Von diesen sei die Anzahl von Aufgaben, für die kein Geburtstag von mehr als Personen geteilt wird, aber mindestens ein Geburtstag tatsächlich von Personen geteilt wird . Die Wahrscheinlichkeit, nach der wir suchen, kann durch Summieren von für geeignete Werte von und Multiplizieren des Ergebnisses mit . b n q ( k ; n , b ) k k q ( k ; n , b ) k b - nbnbnq(k;n,b)kkq(k;n,b)kb−n
Diese Zählungen können genau für Werte von kleiner als einige hundert gefunden werden. Sie werden jedoch keiner einfachen Formel folgen: Wir müssen die Muster der Art und Weise berücksichtigen, in der Geburtstage zugewiesen werden können . Ich werde dies veranschaulichen, anstatt eine allgemeine Demonstration zu liefern. Sei (dies ist die kleinste interessante Situation). Die Möglichkeiten sind:n = 4nn=4
- Jede Person hat einen einzigartigen Geburtstag; Der Code lautet {4}.
- Genau zwei Personen haben Geburtstag; der Code ist {2,1}.
- Zwei Leute haben einen Geburtstag und die anderen zwei haben einen anderen; der Code ist {0,2}.
- Drei Personen haben Geburtstag; Der Code lautet {1,0,1}.
- Vier Personen haben Geburtstag; Der Code lautet {0,0,0,1}.
Im Allgemeinen ist der Code ein Tupel von Zählungen, deren -Element angibt, wie viele unterschiedliche Geburtsdaten genau von Personen geteilt werden. So ist insbesonderek th k{a[1],a[2],…}kthk
1a[1]+2a[2]+...+ka[k]+…=n.
Beachten Sie, dass es auch in diesem einfachen Fall zwei Möglichkeiten gibt, um maximal zwei Personen pro Geburtstag zu erreichen: eine mit dem Code und eine mit dem Code .{ 2 , 1 }{0,2}{2,1}
Wir können die Anzahl der möglichen Geburtstagszuweisungen, die einem bestimmten Code entsprechen, direkt zählen. Diese Zahl ist das Produkt von drei Begriffen. Einer ist ein multinomialer Koeffizient; Es zählt die Anzahl der Möglichkeiten, Personen in Gruppe von , Gruppe von usw. zu unterteilen. Da die Reihenfolge der Gruppen keine Rolle spielt, müssen wir diesen Multinomialkoeffizienten durch dividieren . sein Gegenseitigkeit ist der zweite Ausdruck. Schliesslich richten Sie die Gruppen aus und weisen ihnen jeweils einen Geburtstag zu: Es gibt Kandidaten für die erste Gruppe,a [ 1 ] 1 a [ 2 ] 2 a [ 1 ] ! a [ 2 ] ! ⋯ b b - 1 b ( a [ 1 ] + a [ 2 ] + ⋯ ) b ( m ) b ( b - 1 ) ⋯ ( b - m + 1 )na[1]1a[2]2a[1]!a[2]!⋯bb−1für die zweite und so weiter. Diese Werte müssen multipliziert werden und bilden den dritten Term. Es ist gleich das "faktoriellen Produkt" wobei Mittel .b(a[1]+a[2]+⋯)b(m)b ( b - 1 ) ⋯ ( b - m + 1 )
Es gibt eine offensichtliche und ziemlich einfache Rekursion, die die Anzahl für ein Muster mit der Anzahl für das Muster . Dies ermöglicht eine schnelle Berechnung der Zählwerte für bescheidene Werte von . Insbesondere steht für Geburtsdatum, das genau von Personen geteilt wird. Nachdem diese Gruppen von Personen aus den Personen gezogen wurden, was auf verschiedene Arten (sagen wir) geschehen kann , bleibt die Anzahl der Arten zu zählen, wie das Muster erreicht werden kann{ a [ 1 ] , … , a [ k - 1 ] } n a [ k ] a [ k ] k a [ k ] k n x { a [ 1 ] , … , A [ k - 1 ] } x{a[1],…,a[k]}{a[1],…,a[k−1]}na[k]a[k]ka[k]knx{a[1],…,a[k−1]}unter den verbleibenden Menschen. Multiplizieren Sie dies mit die Rekursion zu erhalten.x
Ich bezweifle, dass es eine geschlossene Formel für , die durch Summieren der Zählwerte für alle Partitionen von deren maximaler Term gleich . Lassen Sie mich einige Beispiele anbieten:n kq(k;n,b)nk
Mit (fünf mögliche Geburtstage) und (vier Personen) erhalten wirn = 4b=5n=4
q(1)q(2)q(3)q(4)=q(1;4,5)=360+60=120=420=80=5.
Woher zum Beispiel die Wahrscheinlichkeit, dass drei oder mehr von vier Personen denselben "Geburtstag" (von möglichen Daten) haben, gleich .( 80 + 5 ) / 625 = 0,1365(80+5)/625=0.136
Als weiteres Beispiel nehmen Sie und . Hier sind die Werte von für das kleinste (nur bis zu sechs Sig Feigen):n = 23 q ( k ; 23 , 365 ) kb=365n=23q(k;23,365)k
k=1:k=2:k=3:k=4:k=5:k=6:k=7:k=8:0.492700.4945920.01253080.0001728441.80449E−61.48722E−89.92255E−115.45195E−13.
Mit dieser Technik können wir leicht berechnen, dass bei 87 Personen eine Wahrscheinlichkeit von etwa 50% (mindestens) einer Drei-Wege-Geburtstags-Kollision, bei 187 eine Wahrscheinlichkeit von 50% einer Vier-Wege-Kollision und eine Wahrscheinlichkeit von 50% besteht eine Fünf-Wege-Kollision zwischen 310 Menschen. Diese letzte Berechnung dauert (zumindest in Mathematica) einige Sekunden, da die Anzahl der zu berücksichtigenden Partitionen zu groß wird. Für wesentlich größere benötigen wir eine Näherung.n
Eine Annäherung ergibt sich aus der Poisson-Verteilung mit der Erwartung , da wir eine Geburtstagszuordnung als aus betrachten können, die sich aus nahezu (aber nicht ganz) unabhängigen Poisson-Variablen mit der Erwartung ergibt: der Variablen für einen gegebenen möglichen Geburtstag beschreibt, wie viele der Personen diesen Geburtstag haben. Die Verteilung des Maximums ist daher ungefähr wobei die Poisson-CDF ist. Dies ist kein strenges Argument, also lasst uns ein wenig testen. Die Näherung für , ergibtb n / b n F ( k ) b F n = 23 b = 365n/bbn/bnF(k)bFn=23b=365
k=1:k=2:k=3:k=4:0.4987830.4968030.0141870.000225115.
Ein Vergleich mit dem vorhergehenden zeigt, dass die relativen Wahrscheinlichkeiten schlecht sein können, wenn sie klein sind, aber die absoluten Wahrscheinlichkeiten sind vernünftigerweise gut auf ungefähr 0,5% angenähert. Tests mit einem weiten Bereich von und deuten darauf hin, dass die Approximation normalerweise ungefähr so gut ist.bnb
Betrachten wir zum Abschluss die ursprüngliche Frage: Nehmen Sie (Anzahl der Beobachtungen) und (Anzahl der möglichen "Strukturen", ungefähr). Die ungefähre Verteilung für die maximale Anzahl von "gemeinsamen Geburtstagen" istb = 1n=10,000b=1000000
k=1:k=2:k=3:k=4:k>4:00.8475+0.1520+0.0004+<1E−6.
(Dies ist eine schnelle Berechnung.) Es ist klar, dass die Beobachtung einer Struktur bei 10 von 10.000 Strukturen von hoher Bedeutung ist. Da und beide groß sind, erwarte ich, dass die Approximation hier recht gut funktioniert.bnb
Im Übrigen können Simulationen nützliche Überprüfungen liefern, wie Shane angedeutet hat. Eine Mathematica-Simulation wird mit einer Funktion wie der folgenden erstellt
simulate[n_, b_] := Max[Last[Transpose[Tally[RandomInteger[{0, b - 1}, n]]]]];
Das wird dann iteriert und zusammengefasst, wie in diesem Beispiel, in dem 10.000 Iterationen des Falls , werden:b = 1n=10000b=1000000
Tally[Table[simulate[10000, 1000000], {n, 1, 10000}]] // TableForm
Seine Ausgabe ist
2 8503
3 1493
4 4
Diese Frequenzen stimmen eng mit denen überein, die durch die Poisson-Näherung vorhergesagt wurden.