栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy.random.seed函数的内部作用机制/作用原理——一个固定序列,依次生成。

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy.random.seed函数的内部作用机制/作用原理——一个固定序列,依次生成。

一、背景

numpy.random.seed函数在网上有很多文章都被讲解过,但是还是没有讲到核心,没把更深层次的作用机理讲出来。

二、生活中的比喻 1.1取扑克牌

假设某厂在不同时间点生产不同型号的扑克牌,每一种型号的扑克对应的每一盒从上到下的排序相同;以型号A为例,每一盒从上到下的排列顺序是123456789...。

我现在给你一盒这种型号A的扑克,让你从上到下依次取出,第一次取出1,第二次取出2后。

再给你一盒型号A扑克牌,再第一次取出1,第二次取出2。

1.2建立关联

(1)在不同时间生产不同型号的扑克牌,也即如果甲方不指定型号,生成的扑克牌顺序就和时间有关。

(2)不同型号的扑克牌排列顺序不同,也即不同数值的seed对应的序列不同。

(3)(重新)给你一幅型号A扑克牌让你取,也即(重新)应用一次numpy.random.seed(A)再取随机数。

(4)只要不再(重新)给你一幅新的型号A扑克牌,那么你只能接着上次取完的顺序继续;也即numpy.random.seed(A)的作用不是只有一次,而是一直持续,后面取随机数的序列固定不变,如果numpy.random.seed(9)对应的序列是123456789,第一次生成随机数是1,第二次生成随机数前虽然不再次执行umpy.random.seed(9),也会受它的影响而生成2。

三、具体代码示意
import numpy as np

np.random.seed(3)
for i in range(5):
    print(np.random.rand())

np.random.seed(3)
print(np.random.rand(5))
# 0.5507979025745755
# 0.7081478226181048
# 0.2909047389129443
# 0.510827605197663
# 0.8929469543476547
# [0.5507979  0.70814782 0.29090474 0.51082761 0.89294695]

看没看到?中间的代码块,只执行一次random.seed,依次取出的序列和后面一次性取出5个的序列数值大小相同(忽略精度影响)。 

所以,别说random.seed只作用一次了,它会作用到程序执行结束,会作用到下一次random.seed出现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号