Python

Код на Python

Какое минимальное количество раз вы должны подбросить монетку, чтобы три раза подряд выпал либо орел, либо решка? А какое максимальное количество попыток может для этого понадобиться? А в среднем? В данном задании вам требуется создать симулятор подбрасывания виртуальной монетки.

Напишите программу, использующую для подброса монетки генератор случайных чисел Python. Монетка при этом должна быть правильной формы, что означает равную вероятность выпадения орла и решки. Подбрасывать монетку необходимо до тех пор, пока три раза подряд не выпадет одно значение, вне зависимости от того, орел - это будет или решка.

Выводите на экран букву О всякий раз, когда выпадает орел, и Р – когда

выпадает решка. При этом для одной симуляции бросков все выпавшие значения необходимо размещать на одной строке. Также необходимо известить пользователя о том, сколько попыток потребовалось, чтобы получить нужный результат.

Программа должна выполнить десять симуляций и в конце представить

минимальное, среднее и максимальное количество подбрасываний монетки, требуемое для достижения нужного нам результата.

Пример вывода программы показан ниже:

О Р Р Р (попыток: 4)

О О Р Р О Р О Р Р О О Р О Р Р О Р Р Р (попыток: 19)

Р Р Р (попыток: 3)

Р О О О (попыток: 4)

О О О (попыток: 3)

Р О Р Р О Р О О Р Р О О Р О Р О О О (попыток: 18)

О Р Р О О О (попыток: 6)

Р О Р Р Р (попыток: 5)

Р Р О Р Р О Р О Р О О О (попыток: 12)

Р О Р Р Р (попыток: 5)

Минимальное количество попыток: 3

Среднее количество попыток: 7,9 Максимальное количество попыток: 19.
import random
# Initialize a list to store the previous flips
prev_flips = []
# Flip a coin until three flips in a row are either heads or tails
while True:
# Generate a random number between 0 and 1
flip = random.random()
# Check if the flip is heads or tails
if flip <= 0.5:
print("H", end="")
prev_flips.append("H")
else:
print("T", end="")
prev_flips.append("T")
# Check if the previous flips are either all heads or all tails
if len(prev_flips) >= 3:
if prev_flips[-3:] == ["H", "H", "H"] or prev_flips[-3:] == ["T", "T", "T"]:
break

# If we have flipped more than three times, remove the first flip from the list
if len(prev_flips) > 3:
prev_flips.pop(0)

# Print the number of flips it took to get three in a row
print("\nIt took", len(prev_flips), "flips to get three in a row.")


# Initialize a list to store the number of flips for each simulation
num_flips = []

# Run the simulation 1000 times
for i in range(1000): Initialize a list to store the previous flips
prev_flips = []
flips = 0

# Flip a coin until three flips in a row are either heads or tails
while True:
# Generate a random number between 0 and 1
flip = random.random()

# Check if the flip is heads or tails
if flip <= 0.5:
prev_flips.append("H")
else:
prev_flips.append("T")

flips += 1

# Check if the previous flips are either all heads or all tails
if len(prev_flips) >= 3:
if prev_flips[-3:] == ["H", "H", "H"] or prev_flips[-3:] == ["T", "T", "T"]:
break
# If we have flipped more than three times, remove the first flip from the list
if len(prev_flips) > 3:
prev_flips.pop(0)
# Add the number of flips to the list
num_flips.append(flips)
Print the minimum, maximum, and average number of flips
print("Minimum number of flips:", min(num_flips))
print("Maximum number of flips:", max(num_flips))
print("Average number of flips:", mean(num_flips))
ДС
Денис Сысоев
275
Лучший ответ