attempts
- последнее сгенерированное случайное целое число.int
не имеет атрибута (поля данных) sum
.Поскольку вы недостаточно описали, что, по вашему мнению, делает ваш код, мы не можем решить эту проблему.
Python's sum
функция добавляет последовательность элементов;см. документацию с примерами.
Вы пытаетесь подсчитать что-то с помощью переменной m
, но не даете ей начальное значение.
Вы устанавливаете t
в 0 и позжеразделите его на предел цикла, но вы никогда не меняли значение;это будет 0.0.
Обновление после комментариев OP
Я думаю, теперь я понимаю: вы хотите оценить вероятность получения как минимум 22 голов (иликакую бы сторону вы ни выбрали) в наборе 30 бросков справедливой монеты.Я сделаю все возможное, чтобы использовать ваш оригинальный код.
Прежде всего, вы должны бросить честную монету;Вызов функции, который вы сделали, генерирует случайное целое число в диапазоне [2, 30].Вместо этого вам нужно выполнить вызов, такой как приведенный ниже, группами по 30:
flip = random.randint(0,1)
Это дает вам 0 или 1. Давайте предположим, что мы хотим подсчитать 1
результатов: это позволяет нампросто добавьте серию:
count = sum(random.randint(0,1) for _ in range(30))
Это зациклится 30 раз, поместит результаты в список и сложит их;есть ваш счет желаемых сальто.Теперь выполните 10 000 из этих групп с 30 переворотами, проверяя каждую на 22 результата:
import random
t = 0
for i in range (10000):
count = sum(random.randint(0,1) for _ in range(30))
if (count >= 22):
t += 1
p = t / 10000
print(p)
Теперь, если вы хотите еще больше усилить это, используйте тот факт, что успешное сравнение (то есть True
)будет оцениваться до 1
;False
будет 0
: сделать все 10 000 испытаний во внешнем понимании (in-line for
):
t = sum(
sum(random.randint(0,1) for flip in range(30)) > 22
for trial in range(10000) )
print(t / 10000)
flip
и trial
- фиктивные переменные цикла;вы можете использовать любые два.
Наконец, обычно лучше создать именованные переменные для параметров ваших алгоритмов, таких как
threshhold = 22
trial_limit = 10000
flip_limit = 30
и использовать эти имена в вашем коде.