Introducing SeedBank¶
Python programs, particularly data science applications, often need to interact with multiple different random number generators.
The SeedBank package provides a unified interface to seeding them, along with APIs for deriving additional RNG seeds in a predictable way (using NumPy 1.17’s new random infrastructure) and construction random generators.
Credit for the name “seedbank” goes to Keith Moore.
Quickstart¶
To get started, just use the seedbank.initialize()
function to seed all available random
number generators:
import seedbank
seedbank.initialize(65000)
SeedBank will seed all of the following generators that are available:
Python standard
random
(withrandom.seed()
)NumPy legacy random
numpy.random
(withnumpy.random.seed()
)PyTorch (with
torch.manual_seed()
)Numba’s NumPy random
TensorFlow (with
tf.random.set_seed()
)cupy (with
cupy.random.seed()
, also exposingseedbank.cupy_rng()
)
In addition, it will initialize a root seed for constructing new-style NumPy
numpy.random.Generator
instances (numpy_rng()
),
and can construct legacy RandomState
instances from this
same seed (numpy_random_state()
).
If SeedBank doesn’t support your RNG yet, please submit a pull request.
Further Reading¶
Acknowledgements¶
This material is based upon work supported by the National Science Foundation under Grant No. IIS 17-51278. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. This page has not been approved by Boise State University and does not reflect official university positions.