Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python maintain two different random instance

Tags:

python

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 ?

like image 903
gbtimmon Avatar asked Sep 04 '26 13:09

gbtimmon


1 Answers

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.Random class. You can instantiate your own instances of Random to get generators that don’t share state.

like image 74
Delgan Avatar answered Sep 07 '26 03:09

Delgan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!