Я пытаюсь создать систему, которая будет бросать разные многогранные кубики в разных количествах, чтобы определить эффект добавления большего количества кубиков к шансам получить наибольшее число.
import random
from statistics import mean
#define the dice
class Dice:
"""these are the dice to roll"""
def __init__(d, qty, sides):
d.qty = qty
d.sides = sides
q1d4 = Dice(1, 4)
q2d4 = Dice(2, 4)
q3d4 = Dice(3, 4)
q4d4 = Dice(4, 4)
#...removed extras for clarity
q5d20 = Dice(5, 20)
q6d20 = Dice(6, 20)
def Roll(Dice):
i = 0
while i < 10:
single_rolls = []
highest_of_rolls = []
avg_of_highest = []
qty = Dice.qty
sides = Dice.sides
В этой строке я могу успешно бросить случайное число между 1 и числом сторон, и оно добавляется в список single_rolls, и это показано в операторе печати:
for q in range(qty):
#rolls a single dice "qty" times and appends the result to single_rolls
single_rolls.append(random.randint(1, sides))
print(single_rolls)
Затем я пытаюсь добавить только наибольшее число из списка single_rolls в список наибольших_файлов в цикле while для каждой итерации бросков, а затем усреднить его:
highest_of_rolls.append(max(single_rolls))
print(highest_of_rolls)
i += 1
avg_of_highest = mean(highest_of_rolls)
print(avg_of_highest)
Похоже, он не добавляется в список самое высокое_рф, когда я его запускаю. Из оператора печати кажется, что он успешно находит наибольшее число из двух рулонов, но список наибольших_файлов не растет, как я ожидал.
Наконец, в конце кода среднее значение всегда является только последним значением, которое должно было бы войти в самое высокое значение_р_кроллов, а не где-то близко к среднему значению.
Вот пример вывода, который кажется подозрительным:
>>> Roll(q2d20)
[11]
[11, 14]
[14]
[15]
[15, 1]
[15]
[4]
[4, 9]
[9]
[15]
[15, 2]
[15]
[1]
[1, 16]
[16]
[9]
[9, 3]
[9]
[18]
[18, 9]
[18]
[20]
[20, 11]
[20]
[13]
[13, 5]
[13]
[20]
[20, 10]
[20]
20
Даже в моем простом понимании статистики видно, что 20 не является средним числом нескольких чисел ниже 20, и, кроме того, это число сильно колеблется и всегда является просто последним числом, которое попадет в список наибольших_файлов.
Я чувствую, что где-то произошла ошибка отступа, но я пробовал написать несколько способов, и она всегда кажется одинаковой. Любая помощь будет принята с благодарностью.