RandomGeneratorState

RandomGeneratorState[]

gives a representation of the internal state of a pseudorandom generator.

Details

  • RandomGeneratorState[] contains the generator method, method parameters and, when applicable, the full internal state.
  • A RandomGeneratorState object can be given to SeedRandom to restore the state it represents.
  • Some methods have a state that can only persist for the duration of the kernel session in which it was created.
  • The following properties can be extracted using RandomGeneratorState[]["prop"]:
  • "CrossSessionPersistent"whether the internal state persists past the current kernel session
    "Method"method name
    "StateHash"the hash of the state as an integer

Examples

open allclose all

Basic Examples  (2)

Get the current state of the pseudorandom generator:

Use a RandomGeneratorState object to seed BlockRandom:

Scope  (5)

Seed the current random generator and save the resulting state:

A particular sequence of numbers is generated:

Reseed using the RandomGeneratorState object:

The same sequence of numbers is generated:

Some methods have states that can only be restored in the same session:

SeedRandom will work as expected in the same kernel session:

Trying to restore these states in a new kernel session will restore the method but not the state:

Some methods do not have a restorable state:

SeedRandom can use these to set the method, but random sequences will not be reproduced:

Programmatically extract the method name:

Programmatically determine whether the state survives the end of the kernel session:

Applications  (1)

Create a version of BlockRandom that refuses to run if the current random state cannot be restored:

Activate a randomness generation method with no restorable state:

Because this method cannot be seeded, BlockRandom cannot give reproducible results:

The function will refuse to evaluate:

Activate a randomness generation method that possesses a restorable state:

The function restores the random state at the end of each evaluation:

Hence the following result matches the previous result:

Properties & Relations  (5)

When available, the state hash is returned as an integer:

If the state hash has expired, it is returned as None:

The current random generator state is stored in $RandomGeneratorState:

SeedRandom returns a RandomGeneratorState object:

A RandomGeneratorState object can be used as a seed in SeedRandom and related functions:

Use state in SeedRandom:

Use it to seed computations in BlockRandom:

Possible Issues  (1)

When a session-only RandomGeneratorState object is given to SeedRandom, a copy is created:

This copy has a different session hash:

However, both RandomGeneratorState objects produce the same random sequences:

Wolfram Research (2020), RandomGeneratorState, Wolfram Language function, https://reference.wolfram.com/language/ref/RandomGeneratorState.html.

Text

Wolfram Research (2020), RandomGeneratorState, Wolfram Language function, https://reference.wolfram.com/language/ref/RandomGeneratorState.html.

CMS

Wolfram Language. 2020. "RandomGeneratorState." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/RandomGeneratorState.html.

APA

Wolfram Language. (2020). RandomGeneratorState. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/RandomGeneratorState.html

BibTeX

@misc{reference.wolfram_2023_randomgeneratorstate, author="Wolfram Research", title="{RandomGeneratorState}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/RandomGeneratorState.html}", note=[Accessed: 29-March-2024 ]}

BibLaTeX

@online{reference.wolfram_2023_randomgeneratorstate, organization={Wolfram Research}, title={RandomGeneratorState}, year={2020}, url={https://reference.wolfram.com/language/ref/RandomGeneratorState.html}, note=[Accessed: 29-March-2024 ]}