关于Numpy中np.random.seed()随机种子用法

简介: 关于Numpy中np.random.seed()随机种子用法

np.random.seed() 使随机数可预测

随机种子seed括号里的数,顾名思义, 好像就是一个固定的序列集合的种子代号,例如代号0(如:0,1,2,3,4…),中包含一大串随机数,但都是固定的,所以,无论后面怎么random.random,生成的随机数都是seed(0)集合中的随机数。

import numpy as np
from icecream import ic
if __name__ == '__main__':
    np.random.seed(0)   # 随机种子代号自己设定
    x1 = np.random.random(3) 
    ic(x1)

第一次:

ic| x1: array([0.5488135 , 0.71518937, 0.60276338])


第二次:

ic| x1: array([0.5488135 , 0.71518937, 0.60276338])


多次运行后,你会发现每次的值都是一样的。


所以,想要取不同的随机数,可设置seed()内的不同种子代号。


当然还有另外一种方法能让每次取得随机数组都是不一样的,删掉seed()语句,直接random就好了。

import numpy as np
from icecream import ic
if __name__ == '__main__':
    x1 = np.random.random(3) 
    ic(x1)

第一次:

ic| x1: array([0.93113248, 0.16477415, 0.11086242])


第二次:

ic| x1: array([0.57306252, 0.54383123, 0.23124207])


第三次:

ic| x1: array([0.14004845, 0.51201779, 0.67705872])



后面每次都是不同的


曾看到过这样一个解释觉得不错:


(伪)随机数的工作原理是从一个数字(种子)开始,将它乘以一个大数,加上一个偏移量,然后对该和取模。然后将结果数用作种子以生成下一个“随机”数。当你设置种子时(每次),它每次都做同样的事情,给你相同的数字。


只设置一次种子,后续不重置,放在一起来看:

import numpy as np
from icecream import ic
if __name__ == '__main__':
    np.random.seed(0)
    x1 = np.random.random(3)
    ic(x1)
    x2 = np.random.random(3)
    ic(x2)
    x3 = np.random.random(3)
    ic(x3)
    x4 = np.random.random(3)
    ic(x4)
    x5 = np.random.random(3)
    ic(x5)

Result:

ic| x1: array([0.5488135 , 0.71518937, 0.60276338])

ic| x2: array([0.54488318, 0.4236548 , 0.64589411])

ic| x3: array([0.43758721, 0.891773 , 0.96366276])

ic| x4: array([0.38344152, 0.79172504, 0.52889492])

ic| x5: array([0.56804456, 0.92559664, 0.07103606])


总结

如果想要看似随机的数字,不要设置种子。但是,如果有要调试的使用随机数的代码,那么在每次运行之前设置种子会非常有帮助,这样代码每次运行时都会做同样的事情。


相关文章
|
6月前
|
存储 索引 Python
一文掌握python数组numpy的全部用法(零基础学python(二))
一文掌握python数组numpy的全部用法(零基础学python(二))
|
1月前
|
Python
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
43 6
Numpy学习笔记(一):array()、range()、arange()用法
|
6月前
|
数据采集 数据挖掘 Python
numpy中的浅复制和深复制的详细用法(3)
numpy中的浅复制和深复制的详细用法(3)
numpy中的浅复制和深复制的详细用法(3)
|
6月前
|
vr&ar Python
轻松掌握Numpy日常用法,体验Numpy之快(二)
轻松掌握Numpy日常用法,体验Numpy之快(二)
|
6月前
|
存储 机器学习/深度学习 并行计算
轻松掌握Numpy日常用法,体验Numpy之快(一)
轻松掌握Numpy日常用法,体验Numpy之快(一)
|
6月前
|
Python
关于Python的Numpy库reshape()函数的用法
1.介绍 更改数组的形状,不改变原数组 2.语法 a = np.reshape(mat, newshape, order = ‘C’) a : newshape形状的新数组 mat : 原数组
161 0
|
Python
【Numpy】flatnonzero函数的用法
【Numpy】flatnonzero函数的用法
101 0
|
机器学习/深度学习 数据挖掘 索引
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
|
Python
【numpy】random.RandomState()函数用法详解
【numpy】random.RandomState()函数用法详解
【numpy】random.RandomState()函数用法详解