2014-01-08 4 views
0

Функция randint из случайного модуля может быть использована для создания случайных чисел. Например, вызов по random.randint(1, 6) будет давать значения с 1 по 6 с равной вероятностью. Напишите программу, которая будет выполняться 1000 раз. На каждой итерации он делает два звонка на randint для имитации прокатки пары кубиков. Вычислите сумму двух кубиков и запишите количество раз, когда появляется каждое значение.Python-случайное число и его частота

Выходной сигнал должен быть двух столбцов. Один отображает все суммы (т. Е. От 2 до 12), а другой отображает соответствующие частоты сумм в 1000 раз.

Мой код показан ниже:

import random 
freq=[0]*13 

for i in range(1000): 
    Sum=random.randint(1,6)+random.randint(1,6) 
    #compute the sum of two random numbers 
    freq[sum]+=1 
    #add on the frequency of a particular sum 

for Sum in xrange(2,13): 
    print Sum, freq[Sum] 
    #Print a column of sums and a column of their frequencies 

Однако мне не удалось получить каких-либо результатов.

+0

Можно ли сказать нам, что происходит вместо этого? – glglgl

+1

@PedrodelSol Возможно, но почему бы и нет? Они сами составляли основные части и теперь просят намеки. – glglgl

+1

Вы имеете в виду, что ваш фрагмент кода содержит неожиданный отступ и должен отредактировать 'freq [sum] + = 1' to' freq [Sum] + = 1'? – zhangxaochen

ответ

1

Вы не должны использовать Sum, так как простые переменные не должны быть капитализированы.

Вы не должны использовать sum, потому что это затеняет встроенный sum().

Используйте другое имя, отличное от имени переменной. Я предлагаю diceSum; это также немного говорит о контексте, идее вашей программы и т. д., поэтому читатель понимает это быстрее.

Вы не хотите, чтобы читатели вашего кода были счастливы? Подумайте еще раз. Вы просили о помощи здесь ;-)

0

Попробуйте это:

import random 
freq=[0]*13 

for i in range(1000): 
    Sum=random.randint(1,6)+random.randint(1,6) 
    #compute the sum of two random numbers 
    freq[Sum]+=1 
    #add on the frequency of a particular sum 

for Sum in xrange(2,13): 
    print Sum, freq[Sum] 
    #Print a column of sums and a column of their frequencies 

Там в случае ошибки грамматики на сумму

Семя генератора, что питон использования должно быть достаточно для вашей задачи.

+0

Это точно такой же код с другим отступом и добавлением '#!' Shebang, который, по крайней мере, на моем ПК, не будет работать, потому что мой Python не установлен в '/ usr/local /'. Лучше предложите '#!/Usr/bin/env python' или' #!/Usr/bin/env python2.7'. – glglgl

+0

Согласен, удалив его. –

+0

О, хорошо. Я не видел орфографию 'sum'. – glglgl

0

Похоже, что опечатка была ошибкой. Sum переменная неверно напечатана как sum.

Ниже приведен модифицированный код в питона 3.x

#!/usr/bin/env python3 

import random 

freq= [0]*13 

for i in range(1000): 
    #compute the sum of two random numbers 
    Sum = random.randint(1,6)+random.randint(1,6) 

    #add on the frequency of a particular sum 
    freq[Sum] += 1 

for Sum in range(2,13): 
    #Print a column of sums and a column of their frequencies 
    print(Sum, freq[Sum]) 
Смежные вопросы