我想在程序的第一部分使用 np.random.seed() 并在第二部分取消它。再次,
Python的随机似乎是全局的,因此更改它的模块将相互影响.
虽然当然有许多第三方模块,但有没有办法使用Python的标准库在上下文中包含一个本地随机数.
(不使用random.get/setstate,在混合来自不同模块的代码时可能会出现问题).
就像是...
r = random.context(seed=42)
number = r.randint(10, 20)
Run Code Online (Sandbox Code Playgroud)
每个模块可以使用自己的随机上下文.
我有一个关于在开放人工智能健身房中播种并在自定义环境中使用它的问题。我们以月球着陆器环境为例,默认的播种函数是:
def seed(self, seed=None):
self.np_random, seed = seeding.np_random(seed)
return [seed]
Run Code Online (Sandbox Code Playgroud)
在生成时他们使用:
height = self.np_random.uniform(0, H/2, size=(CHUNKS+1,) )
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我创建一个自定义环境并使用 numpy 或 sci stats,我需要播种np.random.seed()才能获得效果。我应该如何self.np_random.在自定义环境中使用种子?如果我使用np.random.uniform(0,0.02)?我应该使用self.np_random.uniform(0,0.02)吗?科学统计呢?如果我使用的话,我应该如何使用它scipy.stats.truncnorm.rvs()?如果我设置有什么后果吗np.random.seed(seed)?
我现在正在使用此解决方法:Can I create a local numpy random seeds?
有更好的解决方案吗?