使用随机模块(python)跨越多个导入文件的唯一种子
我有一个大的模拟,我在主文件中为随机模块设置了一个种子值(通过random.seed)。主文件导入随机模块和其他文件,这些文件也导入随机模块。当我运行模拟时,我希望将设置的种子共享给导入的文件,但由于导入的文件比主文件先执行,因此该文件中的随机模块每次都会重置种子。下面是一个可复制的示例 文件main.py:使用随机模块(python)跨越多个导入文件的唯一种子,python,random-seed,Python,Random Seed,我有一个大的模拟,我在主文件中为随机模块设置了一个种子值(通过random.seed)。主文件导入随机模块和其他文件,这些文件也导入随机模块。当我运行模拟时,我希望将设置的种子共享给导入的文件,但由于导入的文件比主文件先执行,因此该文件中的随机模块每次都会重置种子。下面是一个可复制的示例 文件main.py: # main.py import foo import random random.seed (10) main = random.randint(1, 100) print(&qu
# main.py
import foo
import random
random.seed (10)
main = random.randint(1, 100)
print("main: ", main)
文件foo.py:
# foo.py
import random
foo = random.randint(1, 100)
print("foo: ", foo)
当我多次执行python main.py
时,main
变量的值总是相同的,正如我所期望的那样。但是foo
变量的值每次都会改变。如何在主文件中设置种子,以便在导入的文件中使用相同的种子。每次导入random
时,它都会使用新种子创建名为random
的类的新实例。不幸的是,这意味着您想要做的事情是不可能的,除非您直接绕过随机数生成器
您可以这样做的方法之一是:
随机导入
随机种子(123)
进口食品
foo.random=random
虽然这不会影响加载foo
时执行的任何代码,但只有在替换foo.random=random
后调用foo
中的函数。它也不会传播到由foo
完成的任何import
s
另一种方法是定义一个帮助文件或函数,为您设置
random
,并在整个代码库中使用它-尽管这不会影响任何直接依赖random
的库函数。也可以看到,尽管这里没有给出解决方案。谢谢,问题是,我从用户输入中获取种子,并在设置它之前对其进行处理。因此,不可能以简单的方式为包含多个文件的Python存储库定义全局种子?如果您想使用标准库的random
模块,则不可能。