Как я мог узнать случайное число, сгенерированное в python? - PullRequest
0 голосов
/ 24 июня 2018

Вот мой код. Я только начинаю изучать Python. Я пытаюсь сгенерировать случайное число и угадать его. Если ответ 7, то моя программа выведет «повезло». Если нет, то «не повезло». Я пытаюсь запустить мой простой код много раз. Каждый раз мне становится "не повезло". Есть ли кто-нибудь, кто знает, в чем проблема в моем алгоритме или где-то еще? Кстати, я действительно хочу знать, как я могу знать, точно знать, что число случайно генерируется в Python? Мне просто интересно, один и тот же номер, который генерируется каждый раз, один и тот же или нет.

from random import randint
z = input("What's the max number you want me to guess?")
choice = f"randint(1,{z})"
if choice == 7:
    print("lucky")
else:
    print("unlucky")

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

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

from random import *
z = int(input("What's the max number you want me to guess?"))
choice = randint(1,z)
print("The number that I guessed:",choice)
if choice == z:
    print("I gussed it! I got lucky.")
else:
    print("I couldn't guess it, I got unlucky.")
0 голосов
/ 24 июня 2018

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

Попробуйте запустить свой код в отладчике или добавьте 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.

...