2017-04-01 2 views
0

J'essaie de découvrir comment je pourrais calculer les probabilités d'obtenir les résultats dans un simulateur de tirage de pièces. Il y a 50% de chances de têtes et 50% de queues. Comment est-ce que je devrais travailler sur la chance du résultat qu'il se produit en passant? Voici mon code:Trouver des probabilités

import random 
head = 0 
tail = 0 
length = int(input('How many coins do you want to flip? ')) 
for i in range(length): 
    side = random.randint(0, 1) 
    if side == 1: 
     head = head + 1 
    else: 
     tail = tail + 1 
print('There where ' + str(tail) + ' tails and ' + str(head) + ' heads') 
+0

Voulez-vous mesurer la probabilité d'obtenir la même quantité de têtes et de queues compte tenu du nombre de simulations? – fulaphex

+0

disons que vous le retournez dix fois je le veux pour vous dire la probabilité du nombre de queues qu'il donne, puis pour le nombre de têtes – Monkeybike123

+0

Vous voulez que je vous dise: il y a probabilité p1 qu'il y aura 1 queue, p2 il y aura deux queues ...? – fulaphex

Répondre

2

Probabilités du résultat que vous avez obtenu dans la simulation peuvent être imprimés comme ceci:

print('Tail: ' + str(float(tail)/length) + ' Head ' + str(float(head)/length)) 
+0

Ceci montre le pourcentage de chaque résultat (têtes/queues), pas les chances d'obtenir ce résultat particulier. – Monkeybike123

1

Pour calculer cette probabilité, vous devez utiliser le coefficient binomial. enter image description here - ceci vous donne toutes les combinaisons possibles de h têtes et de queues. Divisez-le avec toutes les combinaisons possibles qui sont enter image description here et vous obtenez votre probabilité.

Pour obtenir la fonction factoriel, le point d'exclamation, vous pouvez écrire:

def fact(n): 
    if n == 0: 
     return 1 
    return n * fact(n-1) 

Cela fonctionne pour tous les nombres positifs. Si vous voulez l'accélérer, vous pouvez avoir un dictionnaire qui vous permettra de mémoriser les appels précédents. Ce serait:

_d = {0:1} 
def fact(n): 
    if n in _d: return _d[n] 
    _d[n] = n * fact(n-1) 
    return _d[n] 
+0

Comment pourrais-je obtenir le point d'exclamation en python, je comprends comment cela fonctionne, mais il n'est pas reconisé – Monkeybike123

+0

Point d'exclamation est juste fonction factorielle. – fulaphex