7.3.随机种子

导入第三方库以及相关设置

import numpy as np
from numpy import random
import matplotlib.pyplot as plt

%matplotlib inline

# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"

# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

随机种子

RandomState

定义种子类

RandomState是一个种子类,提供了各种各样的子方法,最常用的是seed

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一般来说,在同一个操作系统上,尤其是在同一台电脑上,随机种子的计算方法一般来说都是一样的。这时候,如果随机种子值一样时,我们通过随机种子得到的随机值也应该是一样的。只要随机种子值不发生变化,随机值应该也不会发生变化。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么我们已经设置了随机种子值为1,但是得到的随机值却会发生变化呢?

因为一个随机种子只能够控制生成一组随机数,当我们使用这个随机种子生成一组随机数后又想要生成另一组随机数时,原先的随机种子就不能够再重复使用了,这时候,由于我们没有指定随机种子值,默认是使用系统的时钟作为随机种子。所以,这个时候,我们再次得到的那一组随机数其实它的随机种子是系统的时钟,因而会发生变化。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

seed([seed])

定义全局种子,参数为整数或者是矩阵

random.seed(1234)  # 设置随机种子为1234

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们为什么要设置随机种子呢?

计算机实现的随机数生成通常是伪随机数生成器,为了使得具备随机性的代码最终的结果可复现,需要设置相同的随机种子值。

也就是说,如果我们设置了相同的随机种子,它生成的随机数就是一样的,那么我们的结果就可以再次显现。

电脑产生随机数需要明白以下几点:

(1) 随机数是由随机种子根据一定的计算方法计算出来的数值。所以说,只要计算方法一定,随机种子一定,那么产生的随机数就不会变。

(2) 只要用户不设置随机种子,那么在默认情况下随机种子来自于系统的时钟(也就是定时/计数器的值)

(3) 随机数产生的算法与系统有关,Windows和Linux是不同的,也就是说,即便是随机种子一样,不同系统产生的随机数也不一样

总结

  • RandomState
    实例化一个RandomState对象
from numpy import random

rs=random.RandomState(随机种子值)

rs.rand()  # 生成一组随机数
  • seed()
    直接设置随机种子的值
from numpy import random

random.seed(随机种子值)

rs.rand()  # 生成一组随机数

版权声明:本文为yuhui_2000原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。