np.random.seed做什么?
np.random.seed(0)
np.random.seed做什么?
np.random.seed(0)
当前回答
numpy.random.seed(0)
numpy.random.randint(10, size=5)
这将产生以下输出: 数组([5,0,3,3,7]) 同样,如果我们运行相同的代码,我们将得到相同的结果。
现在,如果我们将种子值0改为1或其他:
numpy.random.seed(1)
numpy.random.randint(10, size=5)
这将产生以下输出:array([5 8 9 5 0]),但现在的输出与上面不同。
其他回答
我希望给出一个非常简短的答案:
种子使(下一个系列)随机数可预测。你可以认为每次调用seed之后,它都预先定义了序列号numpy random保留了它的迭代器,然后每次你得到一个随机数它就会调用get next。
例如:
np.random.seed(2)
np.random.randn(2) # array([-0.41675785, -0.05626683])
np.random.randn(1) # array([-1.24528809])
np.random.seed(2)
np.random.randn(1) # array([-0.41675785])
np.random.randn(2) # array([-0.05626683, -1.24528809])
您可以注意到,当我设置相同的种子时,无论每次从numpy请求多少个随机数,它总是给出相同的数字序列,在本例中是数组([-0.41675785,-0.05626683,-1.24528809])。
它使随机数可预测。 它们都以相同的组合开始,之后的每一次迭代都是相同的。 例子:
Output A: 0, 1, 2
Output B: 1, 3, 5
Output C: 2, 4, 6
Reset seed to 0
Output A: 0, 1, 2
Output B: 1, 3, 5
Output C: 2, 4, 6
Reset seed to 0
Output A: 0, 1, 2
Reset seed to 0
Output A: 0, 1, 2
.
.
.
我希望这对你有所帮助!
想象一下,您正在向某人展示如何用一堆“随机”数字编写代码。通过使用numpy种子,它们可以使用相同的种子号并获得相同的“随机”数字集。
所以它不是完全随机的,因为算法会吐出数字但它看起来像是随机生成的一堆。
numpy.random.seed(0)
numpy.random.randint(10, size=5)
这将产生以下输出: 数组([5,0,3,3,7]) 同样,如果我们运行相同的代码,我们将得到相同的结果。
现在,如果我们将种子值0改为1或其他:
numpy.random.seed(1)
numpy.random.randint(10, size=5)
这将产生以下输出:array([5 8 9 5 0]),但现在的输出与上面不同。
Numpy文档中有一个很好的解释: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.RandomState.html 它指的是梅森扭扭伪随机数发生器。关于算法的更多细节,请访问:https://en.wikipedia.org/wiki/Mersenne_Twister