En tant qu'exercice, je suis en train d'écrire un programme pour calculer les chances de lancer 5 dé avec le même nombre. L'idée est d'obtenir le résultat par simulation plutôt que par simple calcul. Mon programme est le suivant:Exercice de probabilité retournant un résultat différent
# 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 à 0,0001286 (aka (1/6)^5).
Y at-il un problème avec mon programme? Ou est-ce que je fais une erreur de base avec les maths ici? Ou devrais-je trouver mon résultat revenir plus près de la bonne réponse si j'étais capable de lancer le programme sur des itérations plus grandes?
(1/6) XOR 5 ??? –
Non, (1/6) à la puissance de 5. Je suis plus habitué à **, par ex. x ** y, mais je suis allé avec la notation qui était dans la question. –