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

时间:2019-04-25 09:35:07

标签: python random global-variables global random-seed

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

我在这里阅读了有关该主题的几篇文章,例如: Differences between numpy.random and random.random in Python

它解释了两个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())

1 个答案:

答案 0 :(得分:0)

您的问题看起来与随机数生成器的整体思想相反(在获取确定性结果的情况下有效)。通常,您希望为随机数生成器植入一些值,该值将更改每次执行(或设置不同的数字,例如设置一些程序的Cookie否)。例如,当前时间是一个经常使用的种子。之所以不会自动发生,是因为您可以根据需要提供特定的种子来获得确定的序列。

回到您的问题,如果您想拥有全局种子并想使用该种子生成随机数。然后,您可以具有将所有内容结合在一起并随时调用的功能。

def same_seed_random()
     np.random.seed(42)
     print(np.random.random())

我建议您在随机种子@ https://pynative.com/python-random-seed/

上检查更多内容