Я начинающий, и это мой первый вопрос к сообществу.
Я изучаю циклы и пытаюсь создать программу на Python, которая позволяет мне вычислять частоту сумм это может быть результатом броска n кубиков с m гранями. Переменные n и m должны быть введены пользователем. Я знаю, что вы, наверное, видели эту проблему много раз, но я не мог найти правильный ответ на мое решение, возможно, из-за того, как я структурировал свой код до сих пор:
import numpy as np
sums = []
frequency = []
probability = []
lst = []
n = int(input("Enter the number of dice: "))
m = int(input("Enter the number of faces in the dice: "))
lst = list(range(m + 1)[1:])
print(lst)
for item in (lst):
for x in (lst):
sums.append(item+x)
counter = len(sums)
for item in (sums):
frequency.append(sums.count(item))
for item in frequency:
probability.append(item/counter)
probability = ['%.3f' % elem for elem in probability]
results = np.column_stack((sums, probability))
new_results = [tuple(row) for row in results]
uniques = np.unique(new_results, axis=0)
print(uniques)
, и это результат ( как вы можете видеть, он работает только с 2 кубиками):
[['10' '0.083']
['11' '0.056']
['12' '0.028']
['2' '0.028']
['3' '0.056']
['4' '0.083']
['5' '0.111']
['6' '0.139']
['7' '0.167']
['8' '0.139']
['9' '0.111']]
Я застрял в следующих двух проблемах:
- Я изо всех сил пытаюсь понять, как повторите l oop для n кубиков. Я думаю, что способ, которым я проектировал программу, усложнил ситуацию в этом смысле. Не могли бы вы помочь?
- Как правильно заказать вывод? Я хотел бы, чтобы результаты были следующими:
[['2' '0.028']
['3' '0.056']
['4' '0.083']
['5' '0.111']
['6' '0.139']
['7' '0.167']
['8' '0.139']
['9' '0.111']
['10' '0.083']
['11' '0.056']
['12' '0.028']]
Я был бы очень признателен, если бы вы могли помочь мне решить эти проблемы. Кроме того, любое предложение по улучшению моего кода будет отличным! Спасибо, Марко