对random.seed()函数的理解

4 篇文章 0 订阅
2 篇文章 0 订阅

首先先来看一段代码:

from numpy import random

num = 0
# random.seed(3)
while num < 5:
    random.seed(3)
    print(random.random())
    num += 1

输出结果为:

0.5507979025745755
0.5507979025745755
0.5507979025745755
0.5507979025745755
0.5507979025745755

如果将循环外的random.seed(3)打开,将循环中的random.seed(3)注释掉
输出结果为:

0.5507979025745755
0.7081478226181048
0.2909047389129443
0.510827605197663
0.8929469543476547

对此我的理解如下:
seed括号中的数是计算机创建随机数的依据,确定数后(比如seed(3)),之后的所有随机操作都有确定性。上述例子中,seed()在循环外时,多次运行random.random()会产生一个固定顺序(seed导致)的序列;seed()在循环中时,每次都是重新定义一次相同的seed()(seed(3)),然后只执行一次random.random(),因此每次产生的都是固定的随机序列的首项。

另外有位大佬说过一句话就是:
设置 seed 相当于选择一条世界线。
令我深思。那就相当于选择了一条线,而不是一个点,那么如果选择了这条线之后,以后的每个随机数产生都应遵循这条线一直走下去,也就不会相同了,相反就是如果每次都设置一下这条线,然后只产生一个随机数,那么这个随机数明显就是这条线的第一个随机数,显然,问题游刃而解。

总结一下就是:
seed() 用于指定随机数生成时所用算法开始的整数值。
1.如果使用相同的seed()值,则每次生成的随即数都相同;
2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
3.设置的seed()值一直有效

本次分享到此结束,谢谢大家。如有不同见解,恳请大家批评指正!
此博文只做学习用途,无任何商业用途!
最后,祝各位学业有成!
The Best For Her! 大大怪爱小乖乖!
研哥哥

  • 41
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值