Мне нужно было написать программу, которая вычисляла бы вероятность того, что, если я брошу кости 12 раз, каждое число на кости появится хотя бы один раз. Был предложен вопрос, что там 6 человек, и мы все решили показывать объявление ie один раз в месяц в течение года. Тот, кто наберет их номер, выберет ресторан. Какова вероятность, что каждый сможет выбрать свой ресторан хотя бы один раз. Поэтому я написал программу, которая будет бросать кости 12 раз и отслеживать результат. Если каждое число в моем случайном методе выходит, это означает, что у каждого есть шанс выбрать ресторан (Успех). Если одно из чисел остается равным нулю в наборе из 12 роллов, это означает, что не каждый может выбрать ресторан (неудача). Моя программа прекрасно работает и запускается, когда пользователь вводит «roll», и завершает работу, если пользователь вводит «Q». Он отслеживает успехи и делит на то, сколько раз программа запускалась. Я начал с очень простой программы d ie roll, которая запускается некоторое время l oop, а затем собрал всю функциональность оттуда. В конце я понял, что мне нужно, чтобы моя программа запускалась 100 или 1000 раз, чтобы найти хорошую среднюю вероятность. Я не лучший кодер, как я полагаю, вы можете видеть из моего кода, но я закодировал себя в угол и хочу иметь возможность запускать это "n" раз, не тратя часы, пытаясь понять это. Я уверен, что лучшие программисты смогут мне очень легко помочь. Заранее спасибо. Вот мой код.
import random
global success
success = 0
global eachturn
eachturn = 0
def main():
rolling = True
while rolling:
roll_again = input("Ready to roll? ENTER=Roll. Q=Quit. ")
if roll_again.lower() != "q":
global chance
global result
global n1
global n2
global n3
global n4
global n5
global n6
n1 = n2 = n3 = n4 = n5 = n6 = 0
droll = 1
result = 0
for number in range(1, 13):
result = random.randint(1, 6)
print("Roll {0} = {1}".format(droll, result))
droll += 1
counter()
print(
"\n---- Stats: ----\nTimes number one appeared: {}\nTimes number two appeared: {}\n"
"Times number three appeared: {}\nTimes number four appeared: {}\nTimes number five appeared: {}\n"
"Times number six appeared: {}".format(
n1, n2, n3, n4, n5, n6))
iszero()
turncounter()
print("This increments when all numbers 1-6 are part of the 12 roll outcome:")
print(success)
print("The amount of times the program is run (12 rolls of a dice):")
print(eachturn)
print("This is the success divided by the number of program runs:")
print(success/eachturn)
else:
rolling = False
print("Thanks for playing.")
def counter():
global result
global n1
global n2
global n3
global n4
global n5
global n6
if result == 1:
n1 += 1
elif result == 2:
n2 += 1
elif result == 3:
n3 += 1
elif result == 4:
n4 += 1
elif result == 5:
n5 += 1
elif result == 6:
n6 += 1
else:
print("droll = {}".format(result))
return None
def iszero():
global zero
global success
zero = 0
if n1 == 0:
return zero
elif n2 == 0:
return 0
elif n3 == 0:
return 0
elif n4 == 0:
return 0
elif n5 == 0:
return 0
elif n6 == 0:
return 0
else:
zero += 1
success += 1
return zero
def turncounter():
global eachturn
eachturn += 1
main()
Вот пример выходных данных при запуске 1 раз. Однако, когда я набираю «бросить» несколько раз, он правильно увеличивается, давая мне (успех / (количество прогонов))
Пожалуйста, помогите мне выяснить, как запустить это "п" раз. Полагаю, мне нужно удалить свое время l oop, может быть, или есть более простой способ сделать это, не меняя слишком много?