wadmdmaw 发表于 2022-1-25 18:28:13

007讲课后作业

题目:请问下面两个 print() 语句打印的结果是否相同,为什么?

import random

random.seed(1)
print(random.randint(1, 10), random.randint(1, 100), random.randint(1, 1000))

random.seed(1)
print(random.randint(1, 10), random.randint(1, 100), random.randint(1, 1000))

答:完全相同,因为它们拥有相同的种子。解析:默认的情况下,random 使用当前操作系统的时间作为随机数种子,所以产生的随机数看起来总是不会再现。但 random 同时允许我们通过技术手段“再现”伪随机数,那就是提供相同的种子。注意,这是一种设计,并不是什么 BUG。

这里为什么是种子的再现啊?再现不是要用getstate之后用setstate么?
还有这里random.seed(1)的格式括号里是不是少了个参数?文档里面的格式:random.seed(a=None, version=2),应该有两个参数啊,这里括号里的1是a还是version呢?

python爱好者. 发表于 2022-1-25 18:29:40

没事,这种概念还可以不理解,以后用不到的!

python爱好者. 发表于 2022-1-25 18:30:10

虽然我也没理解......{:10_277:}

大马强 发表于 2022-1-25 18:40:19

不写关键字,参数按照设置的顺序,1是a的参数

大马强 发表于 2022-1-25 18:52:01

关于你说的种子再现,解析也说了,只要参数(种子)一样,就能够对其随机器再现,所以random是一个伪随机

tommyyu 发表于 2022-1-25 21:07:18

1是a,version是默认值2
页: [1]
查看完整版本: 007讲课后作业