我正在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随机种子?
答案 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%';