Решил задачу, но кажется, моё решение очень громадное, можно ли его сократить?
ЗадачаВ данном упражнении мы будем симулировать 1000 выбрасываний игральных костей. Начнем с написания функции, выполняющей случайное выбрасывание двух обычных шестигранных костей. Эта функция не будет принимать входных параметров, а возвращать должна число, выпавшее в сумме на двух костях.
В основной программе реализуйте симуляцию тысячи выбрасываний костей. Программа должна хранить все результаты с частотой их выпадения. После завершения процесса должна быть показана итоговая таблица с результатами, похожая на ту, что представлена в табл. 6.1. Выразите частоту выпадения каждого из чисел в процентах вместе с ожидаемым
результатом согласно теории вероятностей.
Моё решение:
from random import randrange, random
from prettytable import PrettyTable
def randomthrowcubs():
throw_1 = randrange(1, 7)
throw_2 = randrange(1, 7)
endthrow = throw_2 + throw_1
return endthrow
sch_2 = 0
sch_3 = 0
sch_4 = 0
sch_5 = 0
sch_6 = 0
sch_7 = 0
sch_8 = 0
sch_9 = 0
sch_10 = 0
sch_11 = 0
sch_12 = 0
for i in range(0, 1001):
randomthrowcubs()
if randomthrowcubs() == 2:
sch_2 += 1
if randomthrowcubs() == 3:
sch_3 += 1
if randomthrowcubs() == 4:
sch_4 += 1
if randomthrowcubs() == 5:
sch_5 += 1
if randomthrowcubs() == 6:
sch_6 += 1
if randomthrowcubs() == 7:
sch_7 += 1
if randomthrowcubs() == 8:
sch_8 += 1
if randomthrowcubs() == 9:
sch_9 += 1
if randomthrowcubs() == 10:
sch_10 += 1
if randomthrowcubs() == 11:
sch_11 += 1
if randomthrowcubs() == 12:
sch_12 += 1
result_2 = sch_2 / 10
result_3 = sch_3 / 10
result_4 = sch_4 / 10
result_5 = sch_5 / 10
result_6 = sch_6 / 10
result_7 = sch_7 / 10
result_8 = sch_8 / 10
result_9 = sch_9 / 10
result_10 = sch_10 / 10
result_11 = sch_11 / 10
result_12 = sch_12 / 10
table = PrettyTable()
table.add_column('исход', [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
table.add_column('симуляция %',
[result_2, result_3, result_4, result_5, result_6, result_7, result_8, result_9, result_10, result_11,
result_12])
table.add_column('ожидаемые данные %', [2.78, 5.56, 8.33, 11.11, 13.89, 16.67, 13.89, 11.11, 8.33, 5.56, 2.78])
print(table)