,,Python中的np.random.seed()随机数种子问题及解决方法

,,Python中的np.random.seed()随机数种子问题及解决方法

随机数种子相当于我给接下来需要生成的随机数的初始值。根据我给的初始值,随机数会按照固定的顺序产生。接下来,本文将向您介绍Python中np.random.seed()随机数种子的问题。有需要的朋友可以参考一下。

:

目录

1.什么是随机数种子2。np.random.seed()参数问题3。使用方法4。随机数种子问题综述

前言:最近在学习的过程中总会遇到np.random.seed()的问题。一开始我一直以为只是一个简单的随机数种子,所以没有太在意。后来遇到很多次,才发现原来这么有用!接下来我就和大家分享一下我对np.random.seed()的了解!

1. 何为随机数种子

随机数种子,相当于我的给接下来需要生成的随机数一个初值,按照我给的这个初始值,按固定顺序生成随机数

如果看完这个你还觉得晦涩难懂,那我再举一个简单易懂的例子:

看第一段代码:

将numpy作为np导入

Np.random.seed(0) #首先定义一个随机数种子。

print(NP . random . rand(5))# ' random '生成5个数字

结果:

[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]

这里的Rand(5)相当于生成五个数据。

接着看第二段代码:

将numpy作为np导入

Np.random.seed(0) #首先定义一个随机数种子。

print(NP . random . rand(5))# ' random '生成5个数字

Print(np.random.rand(5)) #然后‘随机’生成5个数字。

结果:

[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]

[0.64589411 0.43758721 0.891773 0.96366276 0.38344152]

这里我们生成了十个随机数。

最后我们看第三段代码:

将numpy作为np导入

Np.random.seed(0) #首先定义一个随机数种子。

print(NP . random . rand(5))# ' random '生成5个数字

Print(np.random.rand(5)) #然后‘随机’生成5个数字。

随机种子(0)

对于范围(7)中的I:

print(NP . random . random())# ' random '生成7个数字

运行结果:

[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]

[0.64589411 0.43758721 0.891773 0.96366276 0.38344152]

0.7917250380826646

0.5288949197529045

0.5680445610939323

0.925596638292661

0.07103605819788694

0.08712929970154071

0.02021839744032572

接下来,让我们将最后输出的七个随机数的结果与我们之前输出的两次随机数列表进行比较。我们可以清楚的看到:我们最后输出的7个随机数便是依次从我们之前的生成的10个随机数中取得的!。也就是说,在代码中,我们看到的是“随机”,也就是说不是真的随机(伪随机)。

注意:

设置的seed()值仅一次有效

2. np.random.seed()参数问题

先看一段代码:

将numpy作为np导入

random.seed(0)

print(np.random.rand(2,3))

种子(1)

print(np.random.rand(2,3))

种子(2)

print(np.random.rand(2,3))

运行结果:

[[0.5488135 0.71518937 0.60276338]

[0.54488318 0.4236548 0.64589411]]

[4.17022005 e-01 7.20324493 e-01 1.14374817 e-04]

[3.02332573 e-01 1.46755891 e-01 9.23385948 e-02]]

[[0.4359949 0.02592623 0.54966248]

[0.43532239 0.4203678 0.33033482]]

所以这个参数似乎没有什么实际意义。

最后我们得出结论:这个参数是随便取的,可以认为是初值的标志,每次按照这个标志都可以得到相同的初值。

3. 使用方法

使用之前需要调用它:np.random.seed(0)

错误实例:

将numpy作为np导入

种子(1)

L1=np .随机. randn(3,3)

L2=np .随机. randn(3,3)

印刷品(L1)

印刷品(L2)

[[ 1.62434536 -0.61175641 -0.52817175]

[-1.07296862 0.86540763 -2.3015387 ]

[ 1.74481176 -0.7612069 0.3190391 ]]

[[-0.24937038 1.46210794 -2.06014071]

[-0.3224172 -0.38405435 1.13376944]

[-1.09989127 -0.17242821 -0.87785842]]

正确实例:

将numpy作为np导入

种子(1)

L1=np .随机. randn(3,3)

种子(1)

L2=np .随机. randn(3,3)

印刷品(L1)

印刷品(L2)

[[ 1.62434536 -0.61175641 -0.52817175]

[-1.07296862 0.86540763 -2.3015387 ]

[ 1.74481176 -0.7612069 0.3190391 ]]

[[ 1.62434536 -0.61175641 -0.52817175]

[-1.07296862 0.86540763 -2.3015387 ]

[ 1.74481176 -0.7612069 0.3190391 ]]

4. 随机数种子问题总结

(1)随机数种子相当于给我们一个初始值,然后按照固定的顺序生成随机数(也就是我们所说的超长列表)

(2)随机数种子一直影响后期结果。一个随机数种子后产生的随机数都受这个随机数种子的影响,即生成的随机数都是由这个随机数种子给的初值,按照固定顺序生成的

(3)每次使用前需要调用它:np.random.seed(0)

(4)随机取np.random.seed(0)中参数0,可以认为是初始值的符号。每次沿着这个符号走,都可以得到相同的初始值。

参考资料:What does numpy.random.seed(0) do?

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: