使い方(3ステップ)
- 誕生日(days) または ハッシュ(bits) を選びます。
- n を入力(または「target→n」で逆算)します。
- 共有URLをコピー、必要ならシミュレーションで確認します。
入力
結果
- P(衝突)
- —
- P(衝突なし)
- —
- 近似(ポアソン)
- —
- 近似誤差(abs / rel)
- — / —
target → 必要なn
- 必要n(厳密)
- —
- 必要n(近似)
- —
グラフ
P(衝突) と n の関係(青)。オレンジ線は現在のnです。
ヒント:グラフ上をポイントすると、そのnの確率を表示します(モバイルはタップ)。数値は下の早見表でも確認できます。
早見表
| n | P(衝突) | p(0..1) |
|---|
シミュレーション(モンテカルロ)
- 推定 P(衝突)
- —
- 95%信頼区間(Wilson)
- —
- |p̂ − p_exact|
- —
メモ(式)
- 厳密:P(衝突なし)=(d)_n/d^n、P(衝突)=1−P(衝突なし)
- 近似:P(衝突)≈1−exp(−n(n−1)/(2d))
- 前提:d通りが一様に選ばれる(誕生日の偏りは考えない)
例題
定番: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なら同じ結果が再現できます。
現実の誕生日は一様ではないけど使えますか?
標準モデルとして一様分布を仮定しています。