种子用于确定 RNG 结果的序列。像这样:
In [1]: import numpy
In [2]: numpy.random.seed(4)
In [3]: numpy.random.randint(0, 10, 10)
Out[3]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [4]: numpy.random.randint(0, 10, 10)
Out[4]: array([7, 9, 8, 4, 2, 6, 4, 3, 0, 7])
In [5]: numpy.random.randint(0, 10, 10)
Out[5]: array([5, 5, 9, 6, 6, 8, 2, 5, 8, 1])
In [6]: numpy.random.randint(0, 10, 10)
Out[6]: array([2, 7, 0, 8, 3, 1, 0, 3, 2, 3])
In [7]: numpy.random.seed(4)
In [8]: numpy.random.randint(0, 10, 10)
Out[8]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [9]: numpy.random.randint(0, 10, 10)
Out[9]: array([7, 9, 8, 4, 2, 6, 4, 3, 0, 7])
In [10]: numpy.random.randint(0, 10, 10)
Out[10]: array([5, 5, 9, 6, 6, 8, 2, 5, 8, 1])
In [11]: numpy.random.randint(0, 10, 10)
Out[11]: array([2, 7, 0, 8, 3, 1, 0, 3, 2, 3])
看看在第二次seed 调用(在线In [7])之后,序列如何重置?
设置种子后,RNG 输出仍然具有相同的统计属性,但您可以使用相同的种子再次运行程序并获得相同的结果。这对于调试或可重现的模拟等事情很有用。
如果seed 是randint 的一部分,则每次都会重置序列。它看起来像这样:
In [12]: numpy.random.seed(4)
In [13]: numpy.random.randint(0, 10, 10)
Out[13]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [14]: numpy.random.seed(4)
In [15]: numpy.random.randint(0, 10, 10)
Out[15]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [16]: numpy.random.seed(4)
In [17]: numpy.random.randint(0, 10, 10)
Out[17]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
In [18]: numpy.random.seed(4)
In [19]: numpy.random.randint(0, 10, 10)
Out[19]: array([7, 5, 1, 8, 7, 8, 2, 9, 7, 7])
每次调用的结果都相同。在每次调用时产生相同的结果不是我们希望 RNG 输出的行为方式。