这是我的代码。我才刚刚开始学习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")
答案 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.")