#python #dice
#python #dice
Вопрос:
Мне действительно нужна помощь. Я определил функцию, которая дает x количество бросков для n-сторонней кости. Теперь меня просят рассчитать частоту каждой стороны, и freq1 = 1
, похоже, это не работает, учитывая, что может быть еще много сторон (не только 6), и то, что я сделал, было;
первая функция, которую я определил, была 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)
Я получаю список, такой как [(1,0),(2,4),(3,1)...]
so on, который ожидается, но проблема в том, что значение rollfreq не соответствует исходному случайно сгенерированному dice(x)
списку. Я предполагаю, что это потому, что, поскольку это RNG, он также изменяет значения dice(x)
во втором запуске, так что я не могу ссылаться на мою исходную случайно сгенерированную dice(x)
функцию. Есть ли какое-либо решение для этого? Я имею в виду, что я перепробовал почти все, но, по-видимому, это не работает!
Редактировать:
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)
Я добавил код — надеюсь, вы, ребята, поможете мне разобраться в этом, спасибо!
Комментарии:
1. Является ли функция dice чем-то, что вы написали сами? Не могли бы вы также опубликовать код для этого?
2. Спасибо за ваш ответ. Я добавил код в OP.
3. Как насчет присвоения содержимого рулона переменной?
Ответ №1:
Вы дважды вызывали функцию dice(), один раз, когда вы ее печатали, и один раз, когда вы повторяли ее в цикле for . Оттуда приходят разные результаты.
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)
Комментарии:
1. nemanjap, большое вам спасибо за исправление, это было именно то, что мне было нужно! Я попытался вызвать ее один раз, но почему-то не смог этого сделать 🙂