Определите среднее количество бросков, чтобы получить 1-1 на паре костей

Бросьте пару шестигранных кубиков (D6), пока на обоих не выпадет 1. Подсчитайте, сколько рулонов это заняло. Запустите 100 испытаний этого. Распечатайте результат каждого рулона и укажите среднее количество требуемых рулонов.

Используйте вложенные циклы. Внешний цикл выполняет 100 испытаний; внутренний цикл продолжает вращаться до тех пор, пока не появится 1-1. Затем обновите текущие счетчики и перейдите к следующему испытанию.

import random
dice1, dice2 = " ", " " 
roll = " "

for roll in range(1, 101):
    roll = 0
    dice1 = random.randint(1, 6)
    dice2 = random.randint(1, 6)
    print(dice1, ",", dice2)
    while dice1 == 1 and dice2 == 1:
         break

это не останавливается, когда выпало 2 1, и мне нужна помощь в накоплении номера рулона и пробного номера


person Lucy    schedule 27.10.2015    source источник
comment
break вырывается только из петли while, которая у вас есть. Я предполагаю, что вам нужен оператор if.   -  person Morgan Thrapp    schedule 27.10.2015
comment
Почему вы инициализируете переменные строками, если позже присваиваете им числа?   -  person Barmar    schedule 27.10.2015
comment
Как только это будет решено для вас, не забудьте принять ваш любимый ответ. Это правильно закрывает проблему для StackOverflow.   -  person Prune    schedule 27.10.2015


Ответы (1)


Проблема в том, что ваш внутренний цикл ничего не делает. Вы должны дать ему работу, которую вы описали: продолжайте бросать два кубика, пока они оба не выпадут 1. Я изложу логику, которую вы описали, но у меня проблемы с реализацией. Я оставлю детальную работу вам. :-)

roll_count = 1
while not (dice1 == 1 and dice2 == 1):
    roll both dice
    increment roll_count

running_total += roll_count

Вам также нужно где-то инициализировать running_total.

Это тебя расстраивает?

person Prune    schedule 27.10.2015
comment
спасибо за ответ! теперь я точно понимаю! - person Lucy; 27.10.2015