2017-09-15 2 views
-3

Ich versuche, eine Hilfe zu einer Textbuchfrage zu finden, die ich nicht selbst lösen kann.Wahrscheinlichkeit birthday as me

Dies ist aus dem While-Loop-Kapitel. also muss ich While-Schleife verwenden, um die Antwort zu erhalten

die Antwort ist so etwas wie "Mit 253 Studenten ist das Problem größer als 50%, dass jemand den gleichen Geburtstag hat wie Sie."

müssen wir "253" und "50%" erhalten, indem mit while-Schleife I erstellt

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)) 

Es ist jedoch kein Ergebnis nicht zeigen. Was soll ich gehen?

P.S. das ist das "while" kapitel, also erlaube ich nur währenddessen zu verwenden um die antwort zu bekommen ...

+0

Was ist das Ziel? Es geht in eine Endlosschleife. – ifconfig

+1

Mit diesem Ansatz sind verschiedene Dinge nicht in Ordnung. Zuerst sollten Sie eine Wahrscheinlichkeitsschwelle von 0,50 und nicht 50 testen - alle Wahrscheinlichkeiten liegen zwischen 0,0 und 1,0. Zweitens ist Ihre aktuelle Formel für "prob" die Wahrscheinlichkeit, dass kein passender Geburtstag, kein passender Geburtstag ist - ändern Sie diesen Wert auf 1 minus Ihrer aktuellen Formel. Schließlich, wenn dies in Python 2 ist, ist '364/365 'gleich 0 (Integer-Mathematik) - versuche stattdessen' 364.0/365.0'. –

+1

Ihre Argumentation ist fehlerhaft - gehen Sie zu http://math.stackexchange.com und fordern Sie eine Erklärung an. Sie können auch dort aussehen: mathforum.org/dr.math/faq/faq.birthdayprob.html –

Antwort

2

Ihr Problem ist die Berechnung von prob.

  1. Wahrscheinlichkeiten sind in der Regel zwischen 0 und 1
  2. Die Wahrscheinlichkeit, dass jemand dein Geburtstag 364/365 hat nicht gemessen
  3. Sie mit 0 Mitschülern starten (oder 364.0/365 in Py2 Integer-Division Probleme zu vermeiden) sollten

Ihre Logik korrigiert:

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

Die Antwort ist falsch ... aus dem Speicher ist die Anzahl der Schüler näher an 23. Es ist ein Problem mit der Begründung des OP, kein Programmierfehler. http://mathforum.org/dr.math/faq/faq.birthdayprob.html –

+0

@ReblochonMasque Sie irren sich, dass die Chance ist, dass 2 Personen den gleichen Geburtstag haben ... nicht, dass sie den gleichen Geburtstag haben wie Sie! – AChampion

+0

Das sollten noch weniger Studenten sein ... –