Автоматизируйте скучные вещи — Серии подбрасываний монет — Как оптимизировать мой ответ?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Автоматизируйте скучные вещи — Серии подбрасываний монет — Как оптимизировать мой ответ?

Сообщение Anonymous »

Я автоматизировал скучные вещи и решал практические задачи.
Я придумал это решение для проекта в главе списков — Coin Flip Streaks.
Цель задачи следующая:
''В этом упражнении мы попробуем провести эксперимент. Если вы подбросите монету 100 раз и напишете букву «H» для каждой орла и букву «T» для каждой решки, вы создадите список, который будет выглядеть так: «T T T T H H H H T T». Если вы попросите человека сделать 100 случайных подбросов монеты, вы, вероятно, получите чередующиеся результаты типа «H T H T H H T H T T», которые выглядят случайными (для людей), но не являются математически случайными. Человек почти никогда не запишет серию из шести орлов или шести решек подряд, хотя весьма вероятно, что это произойдет при действительно случайном подбрасывании монеты. Люди предсказуемо плохо умеют быть случайными.
Напишите программу, чтобы узнать, как часто полоса из шести орлов или полоса из шести решек появляется в случайно сгенерированном списке орлов и решек. Ваша программа разбивает эксперимент на две части: первая часть генерирует список случайно выбранных значений «орла» и «решки», а вторая часть проверяет, есть ли в нем полоса. Поместите весь этот код в цикл, который повторяет эксперимент 10 000 раз, чтобы мы могли узнать, какой процент подбрасываний монеты содержит серию из шести орлов или решек подряд. Подсказка: вызов функции random.randint(0, 1) вернет значение 0 в 50% случаев и значение 1 в остальных 50% случаев.''
И это мой код.< /p>

Код: Выделить всё

numberOfStreaks = 0
experiment = []
n = 0
for experimentNumber in range(1000):
experimentNumber = experimentNumber + 1
for test in range(100):
selector = random.randint(0,1)
if selector == 0:
experiment = experiment + ['H']
elif selector == 1:
experiment = experiment + ['T']

for n in range(94):
if experiment[n:n+6] == ['T', 'T', 'T', 'T', 'T', 'T']:
numberOfStreaks = numberOfStreaks + 1
elif experiment[n:n+6] == ['H', 'H', 'H', 'H', 'H', 'H']:
numberOfStreaks = numberOfStreaks + 1
else:
numberOfStreaks = numberOfStreaks
print((numberOfStreaks / 100000) * 100)
Я могу эффективно запустить это решение только для 1000 экспериментов, а в книге сказано, что это нужно для 10 000 экспериментов, но это занимает слишком много времени.
Я думаю, это происходит из-за неэффективности алгоритм, который я придумал.
Как мне сделать этот алгоритм более эффективным?

Подробнее здесь: https://stackoverflow.com/questions/710 ... -my-answer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»