from .mtrand import RandomState from ._philox import Philox from ._pcg64 import PCG64, PCG64DXSM from ._sfc64 import SFC64 from ._generator import Generator from ._mt19937 import MT19937 BitGenerators = {'MT19937': MT19937, 'PCG64': PCG64, 'PCG64DXSM': PCG64DXSM, 'Philox': Philox, 'SFC64': SFC64, } def __bit_generator_ctor(bit_generator_name='MT19937'): """ Pickling helper function that returns a bit generator object Parameters ---------- bit_generator_name : str String containing the name of the BitGenerator Returns ------- bit_generator : BitGenerator BitGenerator instance """ if bit_generator_name in BitGenerators: bit_generator = BitGenerators[bit_generator_name] else: raise ValueError(str(bit_generator_name) + ' is not a known ' 'BitGenerator module.') return bit_generator() def __generator_ctor(bit_generator_name="MT19937", bit_generator_ctor=__bit_generator_ctor): """ Pickling helper function that returns a Generator object Parameters ---------- bit_generator_name : str String containing the core BitGenerator's name bit_generator_ctor : callable, optional Callable function that takes bit_generator_name as its only argument and returns an instantized bit generator. Returns ------- rg : Generator Generator using the named core BitGenerator """ return Generator(bit_generator_ctor(bit_generator_name)) def __randomstate_ctor(bit_generator_name="MT19937", bit_generator_ctor=__bit_generator_ctor): """ Pickling helper function that returns a legacy RandomState-like object Parameters ---------- bit_generator_name : str String containing the core BitGenerator's name bit_generator_ctor : callable, optional Callable function that takes bit_generator_name as its only argument and returns an instantized bit generator. Returns ------- rs : RandomState Legacy RandomState using the named core BitGenerator """ return RandomState(bit_generator_ctor(bit_generator_name))