mirror of https://github.com/hero-y/BHRL
34 lines
977 B
Python
34 lines
977 B
Python
"""Helpers for random number generators."""
|
|
import numpy as np
|
|
|
|
|
|
def ensure_rng(rng=None):
|
|
"""Coerces input into a random number generator.
|
|
|
|
If the input is None, then a global random state is returned.
|
|
|
|
If the input is a numeric value, then that is used as a seed to construct a
|
|
random state. Otherwise the input is returned as-is.
|
|
|
|
Adapted from [1]_.
|
|
|
|
Args:
|
|
rng (int | numpy.random.RandomState | None):
|
|
if None, then defaults to the global rng. Otherwise this can be an
|
|
integer or a RandomState class
|
|
Returns:
|
|
(numpy.random.RandomState) : rng -
|
|
a numpy random number generator
|
|
|
|
References:
|
|
.. [1] https://gitlab.kitware.com/computer-vision/kwarray/blob/master/kwarray/util_random.py#L270 # noqa: E501
|
|
"""
|
|
|
|
if rng is None:
|
|
rng = np.random.mtrand._rand
|
|
elif isinstance(rng, int):
|
|
rng = np.random.RandomState(rng)
|
|
else:
|
|
rng = rng
|
|
return rng
|