Python的随机似乎是全局的,因此更改它的模块将相互影响。
虽然当然有许多第三方模块,但有没有办法使用Python的标准库在上下文中包含一个本地随机数。
(不使用random.get/setstate
,在混合来自不同模块的代码时可能会出现问题。)
像...一样的东西。
r = random.context(seed=42)
number = r.randint(10, 20)
每个模块可以使用自己的随机上下文。
答案 0 :(得分:12)
此模块提供的函数实际上是
random.Random
类的隐藏实例的绑定方法。您可以实例化自己的Random
实例,以获取不共享状态的生成器。
创建自己的random.Random
实例并使用它。
rng = random.Random(42)
number = rng.randint(10, 20)