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?

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top