PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 286 / 得点確率

Barbara は数学者でありバスケットボール選手である。彼女は距離 x からシュートしたときに得点できる確率がちょうど (1-x/q) であることに気づいた。ここで q は 50 よりも大きな実定数である。

各予行練習では,彼女は 距離 x=1, x=2, ..., x=50 からシュートする。記録によると合計点が 20 点ぴったりになる確率はちょうど 2 %である。

q を求め,小数第11位を四捨五入して答えよ。

Problem 286 - Project Euler


独立試行・反復試行で解くのは無理そうなので,確率の漸化式を使います。n 回シュートして k 回成功するのは次のようなときです。

  • n-1 回の時点で k-1 回成功していて,n 回目も成功
  • n-1 回の時点で k 回成功していて,n 回目は失敗

「確率2%」は二分法で処理します。はじめは Mathematica らしく Solve[ ] や NSolve[ ] でやろうと思ったのですが,うまくいきませんでした。題意の確率は q の50次の分数式であり,厳密解を求めるのも Newton 法(=NSolve[ ])も難しいようです。


解を探す範囲も Mathematica で調べました。q=52.… がすぐわかりますが,(lower, upper)=(52, 53) で調べると (50, 60) よりも時間がかかります。

q 確率
50 0.0412277
51 0.031619
52 0.0240158
53 0.0180967
54 0.0135485
55 0.0100904
56 0.0074834
57 0.00553148
58 0.00407812
59 0.00300078
60 0.00220495