If you want to use the same entropy-initialized generator for temporarily-reproducible experiments, then you can use

 

gen = np.random.default_rng()

state = gen.bit_generator.state

gen.standard_normal()

# 0.5644742559549797, will vary across runs

gen.bit_generator.state = state

gen.standard_normal()

# Always the same as before 0.5644742559549797

 

The equivalent to the old way of calling seed to reseed is:

 

SEED = 918273645

gen = np.random.default_rng(SEED)

gen.standard_normal()

# 0.12345677

gen = np.random.default_rng(SEED)

gen.standard_normal()

# Identical value

 

Rather than reseeding the same object, you just create a new object. At some point in the development of Generator both methods were timed and there was no performance to reusing the same object by reseeding.

 

Kevin

 

 

 

From: Neal Becker
Sent: Monday, June 29, 2020 1:01 PM
To: Discussion of Numerical Python
Subject: Re: [Numpy-discussion] reseed random generator (1.19)

 

I was using this to reset the generator, in order to repeat the same sequence again for testing purposes.

 

On Wed, Jun 24, 2020 at 6:40 PM Robert Kern <robert.kern@gmail.com> wrote:

On Wed, Jun 24, 2020 at 3:31 PM Neal Becker <ndbecker2@gmail.com> wrote:

Consider the following:

 

from numpy.random import default_rng
rs = default_rng()

 

Now how do I re-seed the generator?

I thought perhaps rs.bit_generator.seed(), but there is no such attribute.

 

In general, reseeding an existing generator instance is not a good practice. What effect are you trying to accomplish? I assume that you are asking this because you are currently using `RandomState.seed()`. In what circumstances?

 

The raw `bit_generator.state` property *can* be assigned to, in order to support some advanced use cases (mostly involving de/serialization and similar kinds of meta-programming tasks). It's also been helpful for me to construct worst-case scenarios for testing parallel streams. But it quite deliberately bypasses the notion of deriving the state from a human-friendly seed number.

 

--

Robert Kern

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion


 

--

Those who don't understand recursion are doomed to repeat it