誕生日問題(衝突確率)の計算

誕生日問題の衝突確率を厳密計算し、目標確率から必要nも逆算。固定seedのシミュレーション付きです。

d通りの値からn回選ぶとき、同じ値が少なくとも1回一致する確率(衝突確率)を計算します。

計算はブラウザ内で完結します(サーバー送信なし)。共有URLで同じ状態を再現できます。

Other languages: ja | en | es

使い方(3ステップ)

  1. 誕生日(days) または ハッシュ(bits) を選びます。
  2. n を入力(または「target→n」で逆算)します。
  3. 共有URLをコピー、必要ならシミュレーションで確認します。

入力

モード
求めたいもの
例:
プリセット:

結果

P(衝突)
P(衝突なし)
近似(ポアソン)
近似誤差(abs / rel)
/
target → 必要なn
必要n(厳密)
必要n(近似)

グラフ

P(衝突) と n の関係(青)。オレンジ線は現在のnです。

ヒント:グラフ上をポイントすると、そのnの確率を表示します(モバイルはタップ)。数値は下の早見表でも確認できます。

早見表

nP(衝突)p(0..1)
シミュレーション(モンテカルロ)

推定 P(衝突)
95%信頼区間(Wilson)
|p̂ − p_exact|

メモ(式)

例題

定番:d=365, n=23

P(衝突) は約 0.5073(約50.7%)になります。

ハッシュ:32bit

bitsモードで b=32(d=2^32)。target=0.5 の必要nは約 77,164 です。

よくある質問

誕生日問題(誕生日のパラドックス)とは?

d通りからn回選ぶときの衝突確率(少なくとも1回一致)を扱う確率問題です。

なぜ23人で50%を超えるのですか?

ペアの数C(n,2)が増えるため、一致が起きやすくなります。

衝突確率の公式は?

P(衝突なし)=(d)_n/d^n、P(衝突)=1−P(衝突なし)です。

目標確率に必要な人数(n)はどう計算しますか?

P(衝突)≥target を満たす最小の整数nを探索します。

ハッシュ衝突(32bit/64bit)の目安は?

bitsモード(d=2^b)を使います。32bitの50%は約77,164です。

シミュレーションのseedとは?

乱数の初期値です。同じ設定・同じseedなら同じ結果が再現できます。

現実の誕生日は一様ではないけど使えますか?

標準モデルとして一様分布を仮定しています。

関連リンク