2017-09-15 14 views
-3

私は自分自身で解決できないテキストブックの質問について助けを探しています。私の確率誕生日

これはwhileループの章のものです。だから私は答えを得るためにループを使用しなければならない

答えは のようなものです "253人の学生で、probは50%以上の誰かがあなたと同じ誕生日を持っている。ループ は、私はしかし、それがどんな結果を表示しません

classmate = 1 
prob = 0 
while prob <= 50: 
    classmate = classmate + 1 
    prob = (364/365) ** classmate 
print('With {} student, the probability is greater than {} that someone ' 
     'has the same birthday as you.'.format(classmate, prob)) 

を作成しながら

我々は使用して「253」と「50%」を取得する必要があります。私はどうしたらいいですか?

P.S.これは「中」の章なので、答えを得るために使っている間だけ使用できます.....

+0

これの目的は何ですか?それは無限ループに入ります。 – ifconfig

+1

このアプローチにはいくつか問題があります。まず、50ではなく0.50の確率しきい値をテストする必要があります。すべての確率は0.0〜1.0です。第2に、現在のprobの式は、誕生日が一致しない誕生日に一致する確率です。これを現在の式から1を引いた値に変更します。最後に、これがPython 2の場合、 '364/365'は0(整数演算)になります。代わりに' 364.0/365.0'を試してください。 –

+1

あなたの推理に欠陥があります - http://math.stackexchange.comにアクセスして説明を要求してください。また、そこに見ることもできます:mathforum.org/dr.math/faq/faq.birthdayprob.html –

答えて

2

問題は計算probです。

  1. 確率は通常、誰かがあなたの誕生日は
  2. あなたは0クラスメートで開始しなければならない(整数の除算の問題を回避するために、またはPY2で364.0/365364/365である必要がないことを0と1
  3. 確率の間で測定され 修正

あなたのロジック:

In []: 
classmate = 0 
prob = 1 
while prob >= 0.50: 
    classmate += 1 
    prob *= (364/365) # Py 2 (364.0/365) 
print('With {} student, the probability is greater than {:.0%} that someone ' 
     'has the same birthday as you.'.format(classmate, 1-prob)) 

Out []: 
With 253 student, the probability is greater than 50% that someone has the same birthday as you. 
+1

答えは間違っています...生徒の数は23人に近いです。これは、プログラミングの事故ではなく、OPの推論に問題があります。 http://mathforum.org/dr.math/faq/faq.birthdayprob.html –

+0

@ReblochonMasqueあなたは2人の人が同じ誕生日を持つ可能性が間違っています...あなたと同じ誕生日を過ごすことはありません! – AChampion

+0

それでは、生徒数がさらに少なくなるはずです... –

関連する問題