バースデーパラドックス
http://d.hatena.ne.jp/yone-chan/20080107#p1
バースデーパラドックスとは「23人集まれば50%の確率で同じ誕生日の人がいる」というものだそうです。
ホントかなぁと思って実際に計算してみました。Haskellは久し振りです。
module Main (main) where import Text.Printf (printf) f :: Int -> Double f n = 100 * (1 - (product $ map (/ 365) $ [365 - n' + 1 .. 364])) where n' = fromInteger $ toInteger n main :: IO () main = mapM_ (starling (printf "%2d -> %.02f%%\n") f) [2 .. 50] where starling f g x = f x $ g x -- => 2 -> 0.27% -- 3 -> 0.82% -- 4 -> 1.64% -- 5 -> 2.71% -- 6 -> 4.05% -- 7 -> 5.62% -- 8 -> 7.43% -- 9 -> 9.46% -- 10 -> 11.69% -- 11 -> 14.11% -- 12 -> 16.70% -- 13 -> 19.44% -- 14 -> 22.31% -- 15 -> 25.29% -- 16 -> 28.36% -- 17 -> 31.50% -- 18 -> 34.69% -- 19 -> 37.91% -- 20 -> 41.14% -- 21 -> 44.37% -- 22 -> 47.57% -- 23 -> 50.73% ← 23人で50%突破。 -- 24 -> 53.83% -- 25 -> 56.87% -- 26 -> 59.82% -- 27 -> 62.69% -- 28 -> 65.45% -- 29 -> 68.10% -- 30 -> 70.63% -- 31 -> 73.05% -- 32 -> 75.33% -- 33 -> 77.50% -- 34 -> 79.53% -- 35 -> 81.44% -- 36 -> 83.22% -- 37 -> 84.87% -- 38 -> 86.41% -- 39 -> 87.82% -- 40 -> 89.12% -- 41 -> 90.32% -- 42 -> 91.40% -- 43 -> 92.39% -- 44 -> 93.29% -- 45 -> 94.10% -- 46 -> 94.83% -- 47 -> 95.48% -- 48 -> 96.06% -- 49 -> 96.58% -- 50 -> 97.04%
ふむ。確かに23人で50%を突破します。
参照: すべてはここから始まった〜SHA-1の脆弱化 (1/2):デファクトスタンダード暗号技術の大移行(1) - @IT