N = 365 a = 1.0 / N p_bar = (1..N).inject([1]) { |ary,n| ary << ary.last * (N - n + 1) * a } 確率が一様でない場合 誕生日が日付 $i$ である確率を $a_i$ (配列の添字の都合で $0 \le i < N$ )とする。一様のときと同じように、全員の誕生日が異なる確率を先に求める。 テストデータ 2014年の出生数1を基に、確率分布の配列 $a とその長さ N を作成する。実在しない日については人数をゼロとしているが、計算上問題は無い。 x = [ 1873, 1883, 1948, 2430, 2193, 3156, 3390, 3112, 2966, 3058, 2309, 1999, 2022, 3086, 3323, 3136, 3078, 2317, 1941, 2919, 3108,