问题
Python's random seems are global, so modules changing it will effect each other.
While there are of course many 3rd party modules, is there a way using Python's standard library to have a random number local to a context.
(without using random.get/setstate which may be problematic when mixing code from different modules).
Something like...
r = random.context(seed=42)
number = r.randint(10, 20)
Where each module can use its own random context.
回答1:
From the docs:
The functions supplied by this module are actually bound methods of a hidden instance of the
random.Randomclass. You can instantiate your own instances ofRandomto get generators that don’t share state.
Make your own random.Random instance and use that.
rng = random.Random(42)
number = rng.randint(10, 20)
来源:https://stackoverflow.com/questions/37355985/how-to-use-pythons-random-number-generator-with-a-local-seed