适用于整个Jupyter笔记本的块状随机种子

时间:2018-07-19 14:10:48

标签: python numpy jupyter-notebook

我正在Jupyter Lab笔记本上使用numpy.random中的函数,并且尝试使用numpy.random.seed(333)设置种子。仅当种子设置与代码位于同一笔记本单元中时,此方法才能按预期工作。例如,如果我有这样的脚本:

import numpy as np

np.random.seed(44)

ll = [3.2,77,4535,123,4]

print(np.random.choice(ll))
print(np.random.choice(ll))

两个np.random.choice(ll)的输出将是相同的,因为设置了种子:

# python seed.py
4.0 
123.0
# python seed.py
4.0
123.0

现在,如果我尝试在Jupyter笔记本上执行相同的操作,则会得到不同的结果:

# in [11]
import numpy as np
# even if I set the seed here the other cells don't see it
np.random.seed(333)

# in [12]
np.random.choice([1,23,44,3,2])
23
# gets the same numbers

# in [13]
np.random.choice([1,23,44,3,2])
44
# gets different numbers every time I run this cell again

有没有办法在Jupyter实验室笔记本中全局设置numpy随机种子?

2 个答案:

答案 0 :(得分:1)

由于您反复调用randint,因此每次生成的数字都不相同。重要的是要注意,seed不会使函数一致地返回相同的数字-它使运行randint的次数相同时将产生相同的数字。因此,每次重新运行random.randint时,您都会得到相同的数字序列,但是它不是相同的数字。

如果您希望每次都使用相同的随机数,则在该特定单元格中进行播种应该起作用。否则,您可以期望始终获得相同的数字序列,但是不会每次都获得相同的数字。

答案 1 :(得分:0)

因为您在np.random.seed()以外的单元格中运行np.random.seed()。尝试在同一单元格中运行np.random.choice()# in [11] import numpy as np # even if I set the seed here the other cells don't see it np.random.seed(333) np.random.choice([1,23,44,3,2]) 2 # gets the same numbers # in [12] import numpy as np # even if I set the seed here the other cells don't see it np.random.seed(333) np.random.choice([1,23,44,3,2]) 2 # gets the same numbers ,您将获得相同的数字。

show tables like '%Foo%';