Це проблема підрахунку: є можливих присвоєння б народження до російських людей. Нехай q ( k ; n , b ) - кількість завдань, на які день народження не ділиться більш ніж k людьми, але принаймні один день народження насправді ділиться на k людей. Ймовірність, яку ми шукаємо, може бути знайдена шляхом підсумовування q ( k ; n , b ) для відповідних значень k та множення результату на b - n .bnbnq(k;n,b)kkq(k;n,b)kb−n
Ці підрахунки можна знайти саме для значень менше декількох сотень. Однак вони не будуть дотримуватися жодної прямої формули: ми повинні розглянути зразки способів призначення днів народження . Я проілюструю це замість надання загальної демонстрації. Нехай n = 4 (це найменша цікава ситуація). Можливості:nn=4
- Кожна людина має унікальний день народження; код - {4}.
- Рівно двоє людей поділяють день народження; код - {2,1}.
- Двоє людей мають один день народження, а інші двоє мають інший; код дорівнює {0,2}.
- Троє людей поділяють день народження; код {1,0,1}.
- Чотири людини поділяють день народження; код {0,0,0,1}.
Як правило, код є кортежем графів , чиї K - й передбачає елемент , як багато різних дати народження розділяються точно K людей. Таким чином, зокрема,{a[1],a[2],…}kthk
1a[1]+2a[2]+...+ka[k]+…=n.
Зауважте, навіть у цьому простому випадку існує два способи досягнення максимум двох людей на день народження: один з кодом та інший з кодом { 2 , 1 } .{0,2}{2,1}
Ми можемо безпосередньо підрахувати кількість можливих доручень на день народження, що відповідають будь-якому коду. Це число - твір трьох доданків. Один - мультиноміальний коефіцієнт; він підраховує число способів розбиття людей в протягом [ 1 ] групи 1 , [ 2 ] групи з 2 , і так далі. Оскільки послідовність груп не має значення, ми повинні розділити цей коефіцієнт многочлена на в [ 1 ] ! a [ 2 ] ! ⋯na[1]1a[2]2a[1]!a[2]!⋯; її зворотний - другий член. Нарешті, складіть групи та призначте їх кожному дню народження: є кандидати для першої групи, b - 1 для другої тощо. Ці значення треба помножити разом, утворюючи третій доданок. Він дорівнює "факторному добутку" b ( a [ 1 ] + a [ 2 ] + ⋯ ), де b ( m ) означає b ( b - 1 ) ⋯ ( b - m + 1bb−1b(a[1]+a[2]+⋯)b(m) .b(b−1)⋯(b−m+1)
Існує очевидна і досить проста рекурсія, що стосується підрахунку для шаблону до числа для шаблону { a [ 1 ] , … , a [ k - 1 ] } . Це дозволяє швидко обчислити підрахунки для скромних значень n . В Зокрема, [ K ] представляє собою [ K ] дати народження поділяють точно до{a[1],…,a[k]}{a[1],…,a[k−1]}na[k]a[k]kлюди кожен. Після цього [ до ] групи K людей були взяті з російських людей, які можуть бути зроблені в х різних способах (скажімо), залишилися підрахувати кількість способів досягнення шаблону { [ 1 ] , ... , a [ k - 1 ] } серед решти людей. Помноження цього на x дає рекурсію.a[k]knx{a[1],…,a[k−1]}x
Я сумніваюся, що існує формула закритої форми для , яка отримується шляхом підсумовування підрахунків для всіх розділів n , максимальний член яких дорівнює k . Дозвольте запропонувати кілька прикладів:q(k;n,b)nk
З (п’ять можливих днів народження) і n = 4 (чотири людини), ми отримуємоb=5n=4
q(1)q(2)q(3)q(4)=q(1;4,5)=360+60=120=420=80=5.
Звідси, наприклад, шанс, що троє чи більше людей із чотирьох поділяють один і той же «день народження» (з можливих дат), дорівнює ( 80 + 5 ) / 625 = 0,136 .5(80+5)/625=0.136
As another example, take b=365 and n=23. Here are the values of q(k;23,365) for the smallest k (to six sig figs only):
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.
Using this technique, we can readily compute that there is about a 50% chance of (at least) a three-way birthday collision among 87 people, a 50% chance of a four-way collision among 187, and a 50% chance of a five-way collision among 310 people. That last calculation starts taking a few seconds (in Mathematica, anyway) because the number of partitions to consider starts getting large. For substantially larger n we need an approximation.
One approximation is obtained by means of the Poisson distribution with expectation n/b, because we can view a birthday assignment as arising from b almost (but not quite) independent Poisson variables each with expectation n/b: the variable for any given possible birthday describes how many of the n people have that birthday. The distribution of the maximum is therefore approximately F(k)b where F is the Poisson CDF. This is not a rigorous argument, so let's do a little testing. The approximation for n=23, b=365 gives
k=1:k=2:k=3:k=4:0.4987830.4968030.0141870.000225115.
By comparing with the preceding you can see that the relative probabilities can be poor when they are small, but the absolute probabilities are reasonably well approximated to about 0.5%. Testing with a wide range of n and b suggests the approximation is usually about this good.
n=10,000b=1000000
k=1:k=2:k=3:k=4:k>4:00.8475+0.1520+0.0004+<1E−6.
(This is a fast calculation.) Clearly, observing one structure 10 times out of 10,000 would be highly significant. Because n and b are both large, I expect the approximation to work quite well here.
Incidentally, as Shane intimated, simulations can provide useful checks. A Mathematica simulation is created with a function like
simulate[n_, b_] := Max[Last[Transpose[Tally[RandomInteger[{0, b - 1}, n]]]]];
which is then iterated and summarized, as in this example which runs 10,000 iterations of the n=10000, b=1000000 case:
Tally[Table[simulate[10000, 1000000], {n, 1, 10000}]] // TableForm
Its output is
2 8503
3 1493
4 4
These frequencies closely agree with those predicted by the Poisson approximation.