60人の社員が,自分以外の 3 人をランダムに選んで ThanksCard を送る.ある人が 10 枚以上のカードをもらえる確率は? というクイズ.
特にかっこいい方法が思いつかないので正攻法で.自分以外の誰かが選んだ 3 人に自分が含まれる確率は 3/59.含まれない確率は 56/59.各人の選択は独立なので,59 人のうち k 人が自分を選んでくれる確率は
C(59, k) * (3/59)^k * (56/59)^(59-k)
ただし,C(x, y) は x 個から y 個を選ぶ組合せの数.これを 10 以上の k について総和すればよい,のかな.
(defun prod-n-m (n m) ;; n * (n-1) * ... * m
(if (< n m)
1.0
(* 1.0 n (prod-n-m (- n 1) m))))
(defun power (a k) ;; a^k
(if (<= k 0)
1.0
(* 1.0 a (power a (- k 1)))))
(defun pr-k-cards (k)
(* (/ (prod-n-m 59 (- 60 k)) (prod-n-m k 1))
(power (/ 3.0 59) k)
(power (/ 56.0 59) (- 59 k))
100))
(- 100 (apply '+ (mapcar 'pr-k-cards '(0 1 2 3 4 5 6 7 8 9))))
0.0732554296409802
0.073% か.せつない.でもまあ期待値が 3 だから,こんなもんか.
(あ,これコードの部分だけうっすら見えるな.まいいか)
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2012-02-13 02:02