python - 我怎么知道python中生成的随机数?
问题描述
这是我的代码。我刚开始学习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")
解决方案
你每次都倒霉的原因与随机性无关。
尝试在调试器中运行您的代码,或者在print(choice)
您得到的内容中添加 , 。
如果你输入,比如说,,10
那么choice
就是字符串"randint(1,'10')"
。该字符串永远不会等于数字7
。
要完成这项工作,您需要更改两件事:
- 实际上 call
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 之间的随机数时都会给您。
推荐阅读
- spring - 如何从 WebSecurityConfigurerAdapter 中删除身份验证
- javascript - 如何删除由 div 的模糊背景图像造成的意外框阴影?
- javascript - 使用纯JavaScript单击元素后如何获取元素的ID?
- react-native - 无需 SDK 的 React 原生支付网关
- python - 在python中使用rawpy vs imageio读取尼康原始(NEF)图像
- python - 正则表达式:匹配项的变量数组丢弃可选文本
- c - strace中execve之后的系统调用从何而来?他们在做什么?
- python - 处理异常后在for循环中继续下一次迭代
- sql - 如何修复 SQL 表 order-by DateTimeOffset 有时缺少偏移量
- docker - 容器在使用 RUN 命令运行时失败,但可以从 bash shell 运行