我怎么知道python中生成的随机数?

时间:2018-06-24 01:37:52

标签: python python-3.x random numbers

这是我的代码。我才刚刚开始学习Python。 我正在尝试生成一个随机数并进行猜测。如果答案是7,则我的程序将显示“ lucky”。如果不是,则为“倒霉”。我尝试多次运行我的简单代码。每次我“倒霉”。有谁知道问题出在我的算法中还是其他地方。顺便说一句,我真的很想知道我怎么能确切知道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 :(得分:1)

您每次不幸的原因与随机性无关。

尝试在调试器中运行代码,或者在所获得的内容中添加print(choice)

如果输入例如10,则choice是字符串"randint(1,'10')"。该字符串永远不会等于数字7

要使其正常工作,您需要更改两件事:

  • 实际上调用randint,而不是创建看起来像源代码的字符串。
  • 用数字10而不是'10'这样的字符串来调用它。

所以:

choice = randint(1, int(z))

解决此问题后,随机数将是随机的。从技术上讲,它们是由PRNG(伪随机数生成器)创建的,PRNG是一种伪造的算法,它吸收一堆状态信息并吐出 look 随机的数字序列,但实际上可以从中预测州。但是,如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)

…每当您要求输入1到10之间的随机数时,都会给您2

答案 1 :(得分:0)

如果要检查是否随机猜测了相同的数字,请使用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.")