如何在 Python 中设置全局随机种子

Wur*_*tor 5 python random global global-variables random-seed

就像在 R 中一样,我想为整个脚本/会话全局设置一个随机种子,而不是每次执行函数或运行模型时都必须调用随机种子函数。我知道 sci-kit learn 使用 numpy RNG,但也找不到全局设置它的方法。

我在这里阅读了几篇关于这个主题的文章,比如这个: Python 中 numpy.random 和 random.random 之间的差异

它解释了两个 RNG 类之间的区别,但没有解释如何全局设置它。

除了每次我希望输出相同时调用随机种子之外,没有办法做到这一点吗?

## Random Library

import random
##### Random seed given
random.seed(42)
print(random.random()) #will generate a random number 

##### No seed given
print(random.random()) #will generate a random number 

##### Random seed given
random.seed(42)
print(random.random()) #will generate a random number 


#############################

## Numpy Library

import numpy as np

##### Random seed given
np.random.seed(42)
print(np.random.random())

##### No seed given
print(np.random.random())

##### Same seed given
np.random.seed(42)
print(np.random.random())
Run Code Online (Sandbox Code Playgroud)

小智 -2

您的问题看起来与随机数生成器的整个想法相反(在获得确定性结果的情况下有效)。通常,您希望为随机数生成器添加一些会改变每次执行的值(或不同的数字,例如设置一些cookie no)一个会话)的程序。例如,当前时间是常用的种子。这不会自动发生的原因是,如果您愿意,您可以提供特定的种子来获得确定性序列。

回到你的问题,如果你想拥有全局种子并想用该种子生成随机数。然后你就可以有一个功能来组合这两个东西并在你需要的时候调用。

def same_seed_random()
     np.random.seed(42)
     print(np.random.random())
Run Code Online (Sandbox Code Playgroud)

我鼓励您检查有关随机种子的更多信息@ https://pynative.com/python-random-seed/

  • 为了进行复制,您通常需要将随机种子设置为固定 (4认同)