python之np.random.seed()

最近在学习过程中总是遇到np.random.seed()这个问题,网上注释大多数是np.random.seed(0) # 先定义一个随机数种子,但依然有很多变体。

1.什么是随机数种子?

意义:给我们将要使用的、随机生成的数赋予一个初值,之后按照此初值按照固定的顺序生成随机数。

  • 来个第一个示例理解一下。

import numpy as np
np.random.seed(0)  # 先定义一个随机数种子
print(np.random.rand(5))  # "随机"生成5个数

结果如下:

  • 再看第二个示例

import numpy as np
np.random.seed(0)  # 先定义一个随机数种子
print(np.random.rand(5))  # "随机"生成5个数
print(np.random.rand(5))  # 再"随机"生成5个数

结果如下:
在这里插入图片描述

  • 最后看第三个示例

import numpy as np
np.random.seed(0)  # 先定义一个随机数种子
print(np.random.rand(5))  # "随机"生成5个数
print(np.random.rand(5))  # 再"随机"生成5个数

np.random.seed(0)
for i in range(7):
    print(np.random.random())  # "随机"生成7个数

结果如下:
第三个

观察结果,不难发现,第三个code的结果是将我们前面随机生成的随机数显示了出来,并没有自己生成随机数,是一种伪随机。

2.np.random.seed()中的参数

先看一段示例

import numpy as np

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

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

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

结果如下
在这里插入图片描述

将括号中的参数随意换成0,1等,观察结果就会发现,参数本身并没有多大意义,其作用可以看成是一个初值标志。每次参数一样的话,就会生成一个固定的初值。

3.使用方法

每次生成随机数之前都需要调用一下:np.random.seed(0),其中参数0可以换成任意数字。

  • 先给出错误示范:
import numpy as np
np.random.seed(1)        #只在第一次调用了,但是需要进行两次随机数的生成

L1 = np.random.randn(3, 3)
L2 = np.random.randn(3, 3)
print(L1)
print(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]]

  • 正确使用如下:
import numpy as np

np.random.seed(1)          #每次使用前调用一下
L1 = np.random.randn(3, 3)
np.random.seed(1)           # #每次使用前调用一下
L2 = np.random.randn(3, 3)
print(L1)
print(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 ]]

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值