@xochubounty

Как можно сократить решение задачи?

Решил задачу, но кажется, моё решение очень громадное, можно ли его сократить?

Задача
В данном упражнении мы будем симулировать 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)
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
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


Вот эту хрень сделай массивом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 20:09
9000 руб./за проект
28 апр. 2024, в 19:54
2000 руб./за проект
28 апр. 2024, в 19:54
5000 руб./за проект