tz编程学习 发表于 2021-4-25 10:19:46

随机数种子

不是说python的随机数种子是根据系统时间来算的吗
我在两个时间点分别用random.getstate()获取了状态
结果是一样的
这是为什么呢

suchocolate 发表于 2021-4-25 11:00:44

所以你的代码是什么?

tz编程学习 发表于 2021-4-25 12:47:26

suchocolate 发表于 2021-4-25 11:00
所以你的代码是什么?

很简单啊
在IDLE里
在9点用random.getstate获取了一次状态
在10点又获取了一次状态
两次时间不同,但是得到的状态值一样
代码如下
importrandom
x=random.getstate()
print(x)   %这个是九点输入的
y=random.getstate()
print(y)   %这个是十点输入的

我用的是IDLE的交互模式所以上面都是立即出结果的也就是九点十点各拿一次数据

suchocolate 发表于 2021-4-25 12:51:24

tz编程学习 发表于 2021-4-25 12:47
很简单啊
在IDLE里
在9点用random.getstate获取了一次状态


种子是一个,所以一样,有什么问题?

tz编程学习 发表于 2021-4-25 12:52:22

suchocolate 发表于 2021-4-25 12:51
种子是一个,所以一样,有什么问题?

我就是好奇为什么种子是一个
不是说种子和时间挂钩
我选了两个时间
为什么种子一样呢

suchocolate 发表于 2021-4-25 13:08:13

tz编程学习 发表于 2021-4-25 12:52
我就是好奇为什么种子是一个
不是说种子和时间挂钩
我选了两个时间


得用x=random.getstate()
print(random.randint(1,10))
y=random.getstate()
print(x == y)

tz编程学习 发表于 2021-4-25 13:11:38

suchocolate 发表于 2021-4-25 13:08
得用

老哥。。
我主要是不明白
为啥时间不同种子一样

tz编程学习 发表于 2021-4-25 13:12:26

suchocolate 发表于 2021-4-25 13:08
得用

不是说种子是根据时间计算的吗
那我两次的种子 应该是不同的啊

tz编程学习 发表于 2021-4-25 13:14:36

suchocolate 发表于 2021-4-25 13:08
得用

种子到底是什么时候获取的呢
是我 import random的时候就获取了吗
然后之后都用同一个种子
还是说我每次调用 random.getstate都会每次重新获取一个种子

suchocolate 发表于 2021-4-25 13:42:52

tz编程学习 发表于 2021-4-25 13:14
种子到底是什么时候获取的呢
是我 import random的时候就获取了吗
然后之后都用同一个种子


简单看了一下码源,random.getstate()返回的是父类_random的getstate方法,这个不太清楚,可能得看Cpython。    def getstate(self):
      """Return internal state; can be passed to setstate() later."""
      return self.VERSION, super().getstate(), self.gauss_next

tz编程学习 发表于 2021-4-25 14:26:45

suchocolate 发表于 2021-4-25 13:42
简单看了一下码源,random.getstate()返回的是父类_random的getstate方法,这个不太清楚,可能得看Cpyt ...

谢谢您啦
回复我这么多次
反正使用的时候,就是用的同一个种子是吧,所以两次的输出才会是一样的
页: [1]
查看完整版本: 随机数种子