これは、カウントの問題です:あるの可能な割り当てのBへの誕生日のn人。それらのうち、q (k ; n 、b )を、k人以上の誕生日が共有されていない割り当ての数としますが、実際には少なくとも1つの誕生日がk人によって共有されます。求める確率は、kの適切な値についてq (k ; n 、b )を合計し、その結果にb − nを掛けることで見つけることができます。bnbnq(k;n,b)kkq(k;n,b)kb−n
これらのカウントは、数百未満の値に対して正確に見つけることができます。ただし、単純な公式には従いません 。誕生日を割り当てる方法のパターンを考慮する必要があります。一般的なデモを提供する代わりに、これを説明します。ましょう、N = 4(これは、最小の面白い状況です)。可能性は次のとおりです。nn=4
- 各人には固有の誕生日があります。コードは{4}です。
- ちょうど2人が誕生日を共有します。コードは{2,1}です。
- 2人は1人の誕生日を持ち、他の2人は別の誕生日を持ちます。コードは{0,2}です。
- 3人が誕生日を共有します。コードは{1,0,1}です。
- 4人が誕生日を共有します。コードは{0,0,0,1}です。
一般的に、コードは、k 番目の要素が正確にk人が共有する生年月日を規定するカウントのタプルです。したがって、特に、{a[1],a[2],…}kthk
1a[1]+2a[2]+...+ka[k]+…=n.
コードといずれかであっても誕生日ごとに2つの人々の最大値が達成された2つの方法があることは、この単純な場合、メモ、及びコードを有する別の{ 2 、1 }。{0,2}{2,1}
任意のコードに対応する誕生日の割り当ての数を直接カウントできます。この数値は、3つの用語の積です。1つは多項係数です。それは分割の多くの方法カウントに人[ 1 ]のグループ1、[ 2 ]のグループ2、などを。グループの順序は問題ではないので、私たちはすることによって、この多項係数を分割する必要がある[ 1 ] ![ 2 ] !⋯na[1]1a[2]2a[1]!a[2]!⋯; その逆数は第2項です。最後に、グループを並べて、それぞれに誕生日を割り当てます。最初のグループにはb、2番目にはb − 1というように、候補があります。これらの値を乗算して、3番目の項を形成する必要があります。これは「階乗積」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 ]正確で共有生年月日kは{a[1],…,a[k]}{a[1],…,a[k−1]}na[k]a[k]k人それぞれ。これらのk人のグループがn人から引き出された後、x個の異なる方法(たとえば)で行うことができますが、パターン{ a [ 1 ] 、… 、残りの人々の間でa [ k − 1 ] }。これにxを掛けると、再帰が得られます。a[k]knx{a[1],…,a[k−1]}x
には閉形式の式があるとは思わない 。これは、最大項がkに等しいnのすべてのパーティションのカウントを合計することによって得られる。いくつか例を示します。q(k;n,b)nk
では(5つの可能な誕生日)とN = 4(4人)、我々は得ますb=5n=4
q(1)q(2)q(3)q(4)=q(1;4,5)=360+60=120=420=80=5.
たとえば、4人のうち3人以上が同じ「誕生日」(可能な日付のうち)を共有する可能性は(80 + 5 )/ 625 = 0.136になります。5(80+5)/625=0.136
別の例として、およびn = 23を使用します。ここでの値であるQ (K 、23 、365 )、最小のため、K(わずか6つのSIGの図には):b=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.
この手法を使用すると、87人の間で約50%の確率で(少なくとも)3方向の誕生日の衝突、187人の間で4方向の衝突の50%の確率、および50%の確率で187 310人の5方向の衝突。考慮すべきパーティションの数が大きくなるため、最後の計算は数秒かかります(とにかくMathematicaでは)。大幅に大きい場合、近似が必要です。n
一の近似は期待とポアソン分布によって得られる、我々はから生じるように誕生日の割り当てを表示することができるので、Bほとんど(しかしかなり)独立したポアソン変数期待各N / B:任意の可能な誕生日のための変数n人のうち何人がその誕生日を持っているかを説明します。したがって、最大値の分布はおよそF (k )bです。ここで、FはポアソンCDFです。これは厳密な議論ではないので、少しテストしてみましょう。n = 23、bの近似n/bbn/bnF(k)bFn=23は与えるb=365
k=1:k=2:k=3:k=4:0.4987830.4968030.0141870.000225115.
上記と比較することで、相対確率は小さい場合に劣ることがありますが、絶対確率は約0.5%にかなりよく近似していることがわかります。とbの広い範囲でテストすると、通常、近似はこの程度のものであることが示唆されます。nb
締めくくりには、聞かせてのは、元の質問を考えてみます。取る(観測値の数)およびB = 1をn=10,000(可能な「構造」の数)。「共有誕生日」の最大数のおおよその分布はb=1000000
k=1:k=2:k=3:k=4:k>4:00.8475+0.1520+0.0004+<1E−6.
(これは高速な計算です。)明らかに、10,000のうち1つの構造を10回観察することは非常に重要です。のでとbが両方とも大きく、私は非常によく、ここでの仕事への近似を期待しています。nb
ちなみに、シェーンが推測したように、シミュレーションは有用なチェックを提供できます。Mathematicaシミュレーションは次のような関数で作成されます
simulate[n_, b_] := Max[Last[Transpose[Tally[RandomInteger[{0, b - 1}, n]]]]];
次に、、b = 1の 10,000回の反復を実行するこの例のように、反復および要約されます。n=10000ケース:b=1000000
Tally[Table[simulate[10000, 1000000], {n, 1, 10000}]] // TableForm
その出力は
2 8503
3 1493
4 4
これらの周波数は、ポアソン近似によって予測される周波数と密接に一致します。