Причина, по которой каждый раз вам не везет, не имеет ничего общего со случайностью.
Попробуйте запустить свой код в отладчике или добавьте print(choice)
к тому, что вы получаете.
Если вы введете, скажем, 10
, тогда choice
будет строкой "randint(1,'10')"
. Эта строка никогда не будет равна числу 7
.
Чтобы это работало, вам нужно изменить две вещи:
- На самом деле вызовите
randint
вместо создания строки, которая выглядит как исходный код для его вызова.
- Называйте его по номеру, например
10
, а не по строке, например '10'
.
Итак:
choice = randint(1, int(z))
Как только вы исправите это, случайные числа будут случайными. Технически, они создаются PRNG (генератором псевдослучайных чисел), причудливым алгоритмом, который берет кучу информации о состоянии и выделяет последовательность чисел, которые выглядят случайными, но фактически предсказуемы из этого состояния , Но, как объяснено в seed
, по умолчанию Python запускает этот генератор с os.urrandom
(который на большинстве платформ является еще одним PRNG, но сам по себе засевается любым фактическим случайные данные доступны).
Если вы хотите, чтобы последовательность повторялась, для тестирования вы можете вызвать функцию seed
вручную. Например, эта программа:
from random import randint, seed
seed(42)
z = input("What's the max number you want me to guess?")
choice = randint(1, int(z))
print(choice)
… будет давать вам 2
каждый раз, когда вы запрашиваете случайное число от 1 до 10.