Numpy 随机种子对整个 jupyter 笔记本有效

Iva*_*van 16 python numpy jupyter-notebook

我正在使用numpy.randomJupyter Lab 笔记本上的函数,我正在尝试使用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))
Run Code Online (Sandbox Code Playgroud)

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

# python seed.py
4.0 
123.0
# python seed.py
4.0
123.0
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试在 Jupyter notebook 上做同样的事情,我会得到不同的结果:

# 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
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*ter 7

因为您反复调用 randint,所以每次都会生成不同的数字。重要的是要注意,seed 不会使函数始终返回相同的数字,而是使其在重复运行 randint 相同次数时生成相同的数字序列。因此,每次重新运行 random.randint 时,您都会得到相同的数字序列,而不是总是产生相同的数字。

如果您每次都想要相同的随机数,则在每次 random.randint 调用之前,在该特定单元格中重新播种应该有效。否则,您可以期望始终获得相同的数字序列,但不会每次都获得相同的数字。

  • 这就是我一直在做的:在每个笔记本电脑单元上重新播种相同的种子,但这看起来不是一个好的解决方案。 (3认同)
  • @Ivan 不幸的是,我相信这就是你必须做的。或者,您可以将种子语句放在您尝试使用的单元格中,以便在您每次想要运行它时重新设置种子。请记住 - 播种将生成与您重新运行细胞相同的内容序列,但这并不意味着您的输出将始终相同,除非您继续重新播种。 (2认同)