2016-10-16 1 views
0

J'ai vraiment besoin d'aide. J'ai défini une fonction qui donne un nombre x de jets pour les dés à n côtés. Maintenant, je suis demandé de calculer la fréquence de chaque côté et freq1 += 1 ne semble pas fonctionner étant donné qu'il peut y avoir beaucoup plus de côtés (pas seulement 6) et ce que j'ai fait était;Comment appeler la fonction de liste aléatoire sans la chanter en Python?

la première fonction je définissais était dice(x),

freq_list = list(range(1,(n+1))) 
rollfreq = [0]*n 
for w in dice(x): 
    rollfreq[w-1] += 1 

print zip(freq_list,rollfreq) 

Je reçois une liste telle que [(1,0),(2,4),(3,1)...] ainsi de suite, ce qui est attendu, mais le problème est le valus de rollfreq ne correspond pas à la liste dice(x) aléatoire d'origine . Je suppose que c'est parce que comme il est RNG, il change les valeurs de la dice(x) dans la deuxième exécution ainsi que je ne peux pas me référer à ma fonction initiale dice(x) générée aléatoirement. Y a-t-il une solution à cela? Je veux dire que j'ai essayé presque tout, mais apparemment ça ne marche pas!

EDIT:

import random 

n = raw_input('Number of the sides of the dice: ') 
n = int(n) 
x = raw_input('Number of the rolls: ') 
x = int(x) 

def dice(): 
    rolls = [] 
    for i in range(x): 
     rolls.append(random.randrange(1, (n+1))) 
    return rolls 
print dice() 
freq_list = list(range(1,(n+1))) 
rollfreq = [0]*n 
for w in dice(): 
     rollfreq[w-1] += 1 

print 'The number of frequency of each side:', zip(freq_list,rollfreq) 

J'ai ajouté le code - espérons que vous les gars peuvent me aider à sortir ce, je vous remercie!

+0

Est-ce que le dé fonctionne quelque chose que vous avez écrit vous-même? Pourriez-vous poster le code à cela aussi? – n3m4nja

+0

Merci pour votre réponse. J'ai ajouté le code à l'OP. – aleatha

+0

Que diriez-vous d'assigner le contenu du rôle à une variable? –

Répondre

0

Vous avez appelé la fonction dice() deux fois, une fois lorsque vous l'avez imprimée et une fois lorsque vous l'avez parcourue dans une boucle for. Les différents résultats viennent de là.

import random 

n = raw_input('Number of the sides of the dice: ') 
n = int(n) 
x = raw_input('Number of the rolls: ') 
x = int(x) 

def dice(): 
    rolls = [] 
    for i in range(x): 
     rolls.append(random.randrange(1, (n+1))) 
    return rolls 

freq_list = list(range(1,(n+1))) 
rollfreq = [0]*n 

# Grab the rolls 
rolls = dice() 
# Print them here 
print(rolls) 

for w in rolls: 
     rollfreq[w-1] += 1 

print 'The number of frequency of each side:', zip(freq_list,rollfreq) 
+0

nemanjap, merci beaucoup pour la correction, c'était exactement ce dont j'avais besoin! J'ai essayé de l'appeler une fois mais d'une manière ou d'une autre n'a pas réussi à le faire :) – aleatha