【问题标题】:How could i know the random number generated in python?我怎么知道python中生成的随机数?
【发布时间】:2018-12-03 00:22:48
【问题描述】:

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

【问题讨论】:

  • 生成的随机数是random。您无法事先知道将生成哪个号码。如果要查看生成了哪个数字,可以打印出来。
  • 如果你想让你的程序产生的随机数序列是可重复的,你可以使用seed函数(或者你可以用getstate保存状态并用setstate恢复它, 或者你可以创建一个Random 实例并腌制和解开它,等等)。
  • 嘿,米勒。太感谢了。我只是按照你说的做了。然后我发现假设为变量的选项实际上是一个字符串“randint(1.10)”(我尝试将 10 作为最大数)。所以这段代码一开始并没有意识到我想要做什么。我尝试做出选择 = randint(1,z)。 Visual Studio 告诉我 TypeError: +: 'set' 和 'int' 不支持的操作数类型。我该怎么办?

标签: python python-3.x random numbers


【解决方案1】:

你每次都倒霉的原因与随机性无关。

尝试在调试器中运行您的代码,或添加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)

…每次你要求一个介于 1 和 10 之间的随机数时,都会给你2

【讨论】:

  • 太有帮助了!我的好奇心炸了! Python中有很多有趣的东西。
【解决方案2】:

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

【讨论】:

  • 我刚刚发现一个小问题也是关键错误是我没有把 int 放在 z 前面。非常感谢您给我详细的答复。
猜你喜欢
  • 2012-08-14
  • 2011-02-08
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 2016-02-16
相关资源
最近更新 更多