|
from .bit_generator import BitGenerator |
|
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: str | type[BitGenerator] = 'MT19937'): |
|
""" |
|
Pickling helper function that returns a bit generator object |
|
|
|
Parameters |
|
---------- |
|
bit_generator : type[BitGenerator] or str |
|
BitGenerator class or string containing the name of the BitGenerator |
|
|
|
Returns |
|
------- |
|
BitGenerator |
|
BitGenerator instance |
|
""" |
|
if isinstance(bit_generator, type): |
|
bit_gen_class = bit_generator |
|
elif bit_generator in BitGenerators: |
|
bit_gen_class = BitGenerators[bit_generator] |
|
else: |
|
raise ValueError( |
|
str(bit_generator) + ' is not a known BitGenerator module.' |
|
) |
|
|
|
return bit_gen_class() |
|
|
|
|
|
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 or BitGenerator |
|
String containing the core BitGenerator's name or a |
|
BitGenerator instance |
|
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 |
|
""" |
|
if isinstance(bit_generator_name, BitGenerator): |
|
return Generator(bit_generator_name) |
|
|
|
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 |
|
""" |
|
if isinstance(bit_generator_name, BitGenerator): |
|
return RandomState(bit_generator_name) |
|
return RandomState(bit_generator_ctor(bit_generator_name)) |
|
|