我正在等待另一个开发人员完成一段代码,该代码将返回一个形状为np的数组(100,2000),其值为-1,0或1.
与此同时,我想随机创建一个具有相同特征的数组,这样我就可以在开发和测试方面领先一步.问题是我希望这个随机创建的数组每次都是相同的,所以我不会测试每次重新运行我的进程时不断更改其值的数组.
我可以像这样创建我的数组,但有没有办法创建它,以便每次都相同.我可以腌制物体并解开它,但想知道是否还有另一种方法.
r = np.random.randint(3, size=(100, 2000)) - 1
Run Code Online (Sandbox Code Playgroud) 我已阅读文档但我仍然发现难以理解使用的区别
numpy.random.RandomState(0)
Run Code Online (Sandbox Code Playgroud)
要么
numpy.random.seed(0)
Run Code Online (Sandbox Code Playgroud)
它们是否都确保选择随机值的过程在运行中是相同且一致的?
据我所知,语法是
In[88]: np.random.seed(seed=0)
In[89]: np.random.rand(5) < 0.8
Out[89]: array([ True, True, True, True, True], dtype=bool)
In[90]: np.random.rand(5) < 0.8
Out[90]: array([ True, True, False, False, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时rand(),我会得到不同的结果.是否有种子功能缺少的东西?
我相信设置种子总是会产生相同的结果。但是我每次都得到不同的结果。如何设置种子以便我们每次得到相同的结果?
这是 MWE:
import numpy as np
import pandas as pd
random_state = 100
np.random.state = random_state
np.random.seed = random_state
mu, sigma = 0, 0.25
eps = np.random.normal(mu,sigma,size=100)
print(eps[0])
Run Code Online (Sandbox Code Playgroud)
我每次都得到不同的结果。
我不能使用 np.random.seed(xxx)
