据我所知,语法是
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)
然而,当我运行rand()
时,我会得到不同的结果。是否有种子功能缺少的东西?
答案 0 :(得分:7)
想想一个发电机:
def gen(start):
while True:
start += 1
yield start
这将从您插入生成器的数字中继续提供下一个数字。有了种子,它的概念几乎相同。我尝试设置一个变量来生成数据,并且仍保存其中的位置。让我们付诸实践:
>>> generator = gen(5)
>>> generator.next()
6
>>> generator.next()
7
如果要重新启动,还需要重新启动生成器:
>>> generator = gen(5)
>>> generator.next()
6
与numpy对象相同的想法。如果您希望在一段时间内获得相同的结果,则需要使用相同的参数重新启动生成器。
>>> np.random.seed(seed=0)
>>> np.random.rand(5) < 0.8
array([ True, True, True, True, True], dtype=bool)
>>> np.random.rand(5) < 0.8
array([ True, True, False, False, True], dtype=bool)
>>> np.random.seed(seed=0) # reset the generator!
>>> np.random.rand(5) < 0.8
array([ True, True, True, True, True], dtype=bool)