2017-05-31 1 views
-4

Je travaille sur une affectation pour la classe. J'ai réédité mon post pour montrer quels sont mes résultats souhaités. Jusqu'à présent, je suis coincé sur la partie fréquence. Je veux atteindre ces résultats: ResultsFin d'une affectation: Probabilité des matrices

Merci!

importation aléatoire

num = int(input("How many times would you like to roll the dice? ")) 
sides = int(input("How many sides does the dice have? ")) 

def throwDice(num=1, sides=6): 
    return [random.randint(1,sides) for i in range(num)] 


#-- main ---------------------------------------------------------------------- 

numberOfTrials = int(input('How many trials? Enter:')) 



# perform simulation, record and print frequencies 
frequency= 13*[0] # same as [0,0,0,0,0,0,0,0,0,0,0,0,0] 

for i in range(numberOfTrials): 
    t = throwDice() 
    frequency[t[0]+t[0]] += 1; 

# end for 
print() 
print("Frequencies:") 
print(frequency) 


# calculate relative frequencies, probabilities and errors 
relativeFrequency = [0, 0] 
probability = [0,0] 
error = [0,0] 
for i in range(2, len(frequency)): 
    relativeFrequency.append(frequency[i]/numberOfTrials) 
    probability.append(min(i-1,13-i)/36) 
    error.append(abs(probability[i]-relativeFrequency[i])) 
# end for 


#print(relativeFrequency) 
#print(probability) 
#print(error) 
print() 


# print results 
f1 = "{0:<10}{1:<22}{2:<22}{3:<22}" 
f2 = 71*"-" 
f3 = "{0:>3}  {1:<22.15f}{2:<22.15f}{3:<.15f}" 
print(f1.format("Sum","Relative Frequency","Probability","Error")) 
print(f2) 
for i in range(2, len(frequency)): 
    print(f3.format(i, relativeFrequency[i], probability[i], error[i])) 
#end for 
print() 
+0

Si vous souhaitez publier un message d'erreur, publiez également le comportement attendu de votre programme. Bien sûr, nous pouvons vous aider à supprimer l'erreur - mais nous ne pouvons pas vous aider à corriger votre code. Pas sans savoir ce que votre code est censé faire. Pour l'instant, nous ne pouvons que deviner ce que vous essayiez de faire avec 'frequency [t [0] + t [1]]'. –

+0

J'ai réédité mon post. – YearofTheBoar

+0

Ces résultats appartiennent au corps de la question, pas sur un lien en dehors de Stack Overflow. – Prune

Répondre

0

t est un entier, donc t[0] n'a pas de sens valide.

2

Droite. Regardez votre routine:

def throwDice(rolls=1, dice_sides=6): 
    results = 0 
    throwDice = 0 
    for i in range(0, rolls): 
      results = random.randint(1, dice_sides) 
    return throwDice 

...

t = throwDice() 
    frequency[t[0]+t[1]] += 1; 

Vous faites la même quantité de rouleaux, en gardant le dernier en results. Ensuite, vous ignorez cette valeur et renvoyez le 0 initialement affecté à la variable locale throwDice (qui, accessoirement, désactive votre définition de fonction). Ensuite, vous retournez le 0 au programme appelant.

Vous ne pouvez pas prendre les premier et deuxième éléments d'un nombre entier.

Comment avez-vous accumulé autant de code sans savoir que votre fonction est dysfonctionnelle? Essayez de tester les petits noirs avant de continuer. En fait, essayez le test: quelques minutes avec des instructions d'impression bien placées signaleraient le problème. Voir ce beau blog debug pour l'aide.

+0

Je me suis alors fixé et il donne maintenant des résultats. J'ai mis à jour le poste avec les résultats souhaités. Je vous remercie pour votre aide! – YearofTheBoar