就像在 R 中一样,我想为整个脚本/会话全局设置一个随机种子,而不必每次执行函数或运行模型时都调用随机种子函数。我知道 sci-kit learn 使用 numpy RNG,但也找不到全局设置它的方法。
我在这里阅读了几篇关于这个主题的文章,例如这篇文章:Python 中 numpy.random 和 random.random 的区别 https://stackoverflow.com/questions/7029993/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())
random_seed_testing_python_empirical_coding
凭经验测试 python 全局和本地设置是否随机种子。
至少在 colab ipython 笔记本中,
“全局”随机种子设置不会自动应用于所有函数
重置函数中的随机种子不会更改全局设置。
仅仅导入全局种子设置变量并不会改变这一点。
手动重置每个函数中的随机种子
到所需的种子设置变量
作为全局导入global global_seed
,
或作为参数输入导入到函数中(global_seed)
将使随机种子以全局统一的方式运行(在所有函数中)。
示例 colab 输出:
first print
first Random Number: 82
first Random Number: 82
function_no_reset Random Number before reset: 15
function_no_reset Random Number after: 4
function_no_reset Random Number before reset: 95
function_no_reset Random Number after: 36
function_reset Random Number before reset: 32
function_reset Random Number after: 29
function_reset Random Number before reset: 71
function_reset Random Number after: 10
function_global_seed Random Number before reset: 82
function_global_seed Random Number after: 15
function_global_seed Random Number before reset: 82
function_global_seed Random Number after: 15
last Random Number: 82
last Random Number: 82
code
import random
print("first print")
# Set the global random seed
global_seed = 42
random.seed(global_seed)
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"first Random Number: {random_number}")
print(f"first Random Number: {random_number}\n")
# Function to generate and print a random number
def function_no_reset():
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"function_no_reset Random Number before reset: {random_number}")
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"function_no_reset Random Number after: {random_number}\n")
# Function to generate and print a random number
def function_reset():
global global_seed
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"function_reset Random Number before reset: {random_number}")
# Generate a random number
random_number = random.randint(1, 100)
# Reset the random seed for this function
random.seed(random_number)
# Print the random number along with the function name
print(f"function_reset Random Number after: {random_number}\n")
# Function to generate and print a random number
def function_global_seed():
global global_seed
random.seed(global_seed)
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"function_global_seed Random Number before reset: {random_number}")
# Generate a random number
random_number = random.randint(1, 100)
# Reset the random seed for this function
random.seed(random_number)
# Print the random number along with the function name
print(f"function_global_seed Random Number after: {random_number}\n")
# Function to generate and print a random number
def function_import_seed(global_seed):
random.seed(global_seed)
# Generate a random number
random_number = random.randint(1, 100)
# Print the random number along with the function name
print(f"function_import_seed Random Number before reset: {random_number}")
# Generate a random number
random_number = random.randint(1, 100)
# Reset the random seed for this function
random.seed(random_number)
# Print the random number along with the function name
print(f"function_import_seed Random Number after: {random_number}\n")
# Test the functions
function_no_reset()
function_no_reset()
function_reset()
function_reset()
function_global_seed()
function_global_seed()
function_import_seed(global_seed)
function_import_seed(global_seed)
# Print the random number along with the function name
print(f"last Random Number: {random_number}")
print(f"last Random Number: {random_number}\n")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)