В вашем коде вы подсчитываете, сколько у вас полос в целом в каждом наборе результатов, а затем просто распечатываете это число, разделенное на 100. Это не совсем то, что вы хотели найти.
Вы хотите проверить, сколько экспериментов содержат полосу 6 или выше.
Вот мой джеб на этом.
Прежде всего, давайте настроим эксперимент .
import random
number_of_flips = 100
number_of_experiments = 10000
streak_length = 6
streaks = 0
Всегда хорошо установить их заранее, чтобы вы могли изменить их при настройке.
for experiment in range(number_of_experiments):
# We want number_of_flips random values of 0 and 1
# (0 - head, 1 tails)
flips = [random.randint(0, 1) for _ in range(number_of_flips)]
# Now we want to see if we find any streaks of streak_length
heads_streak = 0
tails_streak = 0
for i in flips:
if i == 0:
heads_streak += 1
tails_streak = 0
if heads_streak >= streak_length:
streaks += 1
break
if i == 1:
heads_streak = 0
tails_streak += 1
if tails_streak >= streak_length:
streaks += 1
break
# At this point, if we found a streak, streaks grew by 1,
# and if not, it remains unchanged
Теперь у нас есть количество экспериментов, в которых мы обнаружили полосы в streaks
.
И мы можем найти это, разделив его на число экспериментов и умножив на 100.
print(streaks / number_of_experiments * 100, "%")