有没有一种很好的方法来共享模块之间的随机种子(在python中)?

rga*_*ama 7 python random seed globals

我有一个包含不同主文件的项目(针对不同的模拟).当我运行其中一个主文件时,它应该将种子设置为随机(和numpy.random),并且项目中的所有模块都应该使用该种子.

我找不到一个很好的方法来做到这一点.我有一个文件globals.py与此:

import random

myRandom=None


def initSeed(seed):
    global myRandom
    myRandom =random.Random(seed)
Run Code Online (Sandbox Code Playgroud)

然后从一个主要的我做:

if __name__ == "__main__":

    seed=10
    globals.initSeed(seed)
...
Run Code Online (Sandbox Code Playgroud)

然后在主要调用的模块中,我做:

from globals import myRandom
Run Code Online (Sandbox Code Playgroud)

但myRandom在模块中的值为None(即使我在main中修改了它!).为什么,以及如何解决它?有更好的方法吗?

dav*_*twe 1

  1. 正如@jDo 在评论中提到的,重命名globals.pyrandGlobal.py.

  2. 添加了用于测试的模块testResult.py


randGlobal.py

import random

def initSeed(seed):
    # declare
    global myRandom
    myRandom = random.Random(seed)
Run Code Online (Sandbox Code Playgroud)

测试结果.py

import randGlobal

def randOutput():
    return randGlobal.myRandom.random()
Run Code Online (Sandbox Code Playgroud)

主要.py

import randGlobal

# Add a module for testing
import testResult


def test():
    result = testResult.randOutput()
    print result


# main
if __name__ == "__main__":

    seed=10
    randGlobal.initSeed(seed)
    # after init, hava a test
    test()
Run Code Online (Sandbox Code Playgroud)