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.
Python Random seed() MethodThe seed() method is used to initialize the random number generator. The random number generator needs a number to start with (a seed value), to be able to generate a random number. By default the random number generator uses the current system time.
When you use statistical software to generate random numbers, you usually have an option to specify a random number seed. A seed is a positive integer that initializes a random-number generator (technically, a pseudorandom-number generator). A seed enables you to create reproducible streams of random numbers.
From the docs:
The functions supplied by this module are actually bound methods of a hidden instance of the
random.Random
class. You can instantiate your own instances ofRandom
to 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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With