exercice de probabilité de retour résultat différent que prévu
-
16-09-2019 - |
Question
En guise d'exercice, je vous écris un programme pour calculer les chances de rouler 5 ans meurent avec le même numéro. L'idée est d'obtenir le résultat par simulation par opposition aux mathématiques simples cependant. Mon programme est le suivant:
# rollFive.py
from random import *
def main():
n = input("Please enter the number of sims to run: ")
hits = simNRolls(n)
hits = float(hits)
n = float(n)
prob = hits/n
print "The odds of rolling 5 of the same number are", prob
def simNRolls(n):
hits = 0
for i in range(n):
hits = hits + diceRoll()
return hits
def diceRoll():
firstDie = randrange(1,7,1)
for i in range(4):
nextDie = randrange(1,7,1)
if nextDie!=firstDie:
success = 0
break
else:
success = 1
return success
Le problème est que l'exécution de ce programme avec une valeur pour n de 1 000 000 me donne une probabilité généralement entre 0,0006 et 0,0008 alors que mes maths me fait croire que je devrais obtenir une réponse plus proche de 0,0001286 (aka (1/6) ^ 5).
Y at-il quelque chose de mal avec mon programme? Ou suis-je fais une erreur de base avec les mathématiques ici? Ou devrais-je trouver mon résultat revenir plus proche de la bonne réponse si je pouvais exécuter le programme sur des itérations plus grandes?
La solution
La probabilité d'obtenir un nombre particulier cinq fois est (6/1) ^ 5, mais la probabilité d'obtenir cinq numéros La même chose est (1/6) ^ 4.
Il y a deux façons de voir cela.
D'abord, la probabilité d'obtenir tout de 1, par exemple, est (1/6) ^ 5 car il n'y a qu'un seul moyen de sortir de six pour obtenir un 1. multiplier par cinq dés, et vous obtenez (1/6 ) ^ 5. Mais, car il y a six numéros possibles pour obtenir le même, alors il y a six façons de réussir, ce qui est 6 ((1/6) ^ 5) ou (1/6) ^ 4.
D'un autre point, peu importe ce qui donne le premier rouleau, donc nous l'exclure. Ensuite, nous devons correspondre ce nombre avec les quatre autres rouleaux, dont la probabilité est (1/6) ^ 4.
Autres conseils
Votre calcul est erroné. La probabilité d'obtenir cinq dés avec le même nombre est 6*(1/6)^5 = 0.0007716
.
Très simplement, il y a 6 ** 5
résultats possibles de rouler 5 dés, et seulement 6 de ces résultats sont couronnés de succès, donc la réponse est 6.0 / 6 ** 5
Je pense que votre probabilité attendue ne va pas, comme vous l'avez dit le problème. (6/1) ^ 5 est la probabilité d'obtenir des spécifiques numéro 5 fois dans une rangée; (1/6) ^ 4 est la probabilité de rouler any nombre 5 fois de suite (parce que le premier rouleau est toujours « succès » - qui est, le premier rouleau entraîne toujours un certain nombre ).
>>> (1.0/6.0)**4
0.00077160493827160479
Comparer à l'exécution de votre programme avec 1 million d'itérations:
[me@host:~] python roll5.py
Please enter the number of sims to run: 1000000
The odds of rolling 5 of the same number are 0.000755