鱼C论坛

 找回密码
 立即注册
查看: 1916|回复: 10

[已解决]随机数种子

[复制链接]
发表于 2021-4-25 10:19:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
不是说python的随机数种子是根据系统时间来算的吗
我在两个时间点  分别用random.getstate()获取了状态
结果是一样的  
这是为什么呢
最佳答案
2021-4-25 13:42:52
tz编程学习 发表于 2021-4-25 13:14
种子到底是什么时候获取的呢
是我 import random的时候就获取了吗
然后之后都用同一个种子


简单看了一下码源,random.getstate()返回的是父类_random的getstate方法,这个不太清楚,可能得看Cpython。
  1.     def getstate(self):
  2.         """Return internal state; can be passed to setstate() later."""
  3.         return self.VERSION, super().getstate(), self.gauss_next
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-25 11:00:44 | 显示全部楼层
所以你的代码是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 12:47:26 | 显示全部楼层
suchocolate 发表于 2021-4-25 11:00
所以你的代码是什么?

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-25 12:51:24 | 显示全部楼层
tz编程学习 发表于 2021-4-25 12:47
很简单啊
在IDLE里
在9点用random.getstate获取了一次状态

种子是一个,所以一样,有什么问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 12:52:22 | 显示全部楼层
suchocolate 发表于 2021-4-25 12:51
种子是一个,所以一样,有什么问题?

我就是好奇为什么种子是一个
不是说种子和时间挂钩
我选了两个时间
为什么种子一样呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

得用
  1. x=random.getstate()
  2. print(random.randint(1,10))
  3. y=random.getstate()
  4. print(x == y)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 13:11:38 | 显示全部楼层

老哥。。
我主要是不明白  
为啥时间不同种子一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 13:12:26 | 显示全部楼层

不是说  种子是根据时间计算的吗
那我两次的种子 应该是不同的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 13:14:36 | 显示全部楼层

种子到底是什么时候获取的呢
是我 import random的时候就获取了吗
然后之后都用同一个种子
还是说我每次调用 random.getstate  都会每次重新获取一个种子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-25 13:42:52 | 显示全部楼层    本楼为最佳答案   
tz编程学习 发表于 2021-4-25 13:14
种子到底是什么时候获取的呢
是我 import random的时候就获取了吗
然后之后都用同一个种子


简单看了一下码源,random.getstate()返回的是父类_random的getstate方法,这个不太清楚,可能得看Cpython。
  1.     def getstate(self):
  2.         """Return internal state; can be passed to setstate() later."""
  3.         return self.VERSION, super().getstate(), self.gauss_next
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

谢谢您啦
回复我这么多次
反正使用的时候,就是用的同一个种子是吧,所以两次的输出才会是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表