I am trying to do some anaylsis and for 'reasons' I want objects in my programm to each have their own seeds but no global seeds. Can I accomplish something like this ?
a = random.seed(seed1)
b = random.seed(seed1)
for a in range(5) :
print a.random(), b.random()
The expect output would be
0.23 0.23
0.45 0.45
0.56 0.56
0.34 0.34
etc... Obviously a super contrived example -- These separate seed will be buried in objects and correspond to specific things. But first step is getting something like this to work.
How can I have python maintain multiple seeded randoms ?
You need to use a random.Random class object.
from random import Random
a = Random()
b = Random()
a.seed(0)
b.seed(0)
for _ in range(5):
print(a.randrange(10), b.randrange(10))
# Output:
# 6 6
# 6 6
# 0 0
# 4 4
# 8 8
The documentation states explicitly about your problem:
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.
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