コード例 #1
0
def test_smoke(python_pcg):
    bg = UserBitGenerator(python_pcg, 64)
    gen = Generator(bg)
    assert isinstance(gen.random(), float)
    assert isinstance(gen.standard_normal(dtype=np.float32), float)
    assert isinstance(gen.integers(0, 2**32, dtype=np.uint32), np.integer)
    assert isinstance(gen.integers(0, 2**64, dtype=np.uint64), np.integer)
コード例 #2
0
ファイル: _pickle.py プロジェクト: fagan2888/randomgen
def __generator_ctor(bit_generator_name="mt19937"):
    """
    Pickling helper function that returns a Generator object

    Parameters
    ----------
    bit_generator_name: str
        String containing the core BitGenerator

    Returns
    -------
    rg: Generator
        Generator using the named core BitGenerator
    """
    try:
        bit_generator_name = bit_generator_name.decode("ascii")
    except AttributeError:
        pass
    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.")
    with warnings.catch_warnings():
        warnings.filterwarnings("ignore", category=FutureWarning)
        bit_gen = bit_generator()
    return Generator(bit_gen)
コード例 #3
0
ファイル: _pickle.py プロジェクト: sundarnagarajan/randomgen
def __generator_ctor(bit_generator_name='mt19937'):
    """
    Pickling helper function that returns a Generator object

    Parameters
    ----------
    bit_generator_name: str
        String containing the core BitGenerator

    Returns
    -------
    rg: Generator
        Generator using the named core BitGenerator
    """
    try:
        bit_generator_name = bit_generator_name.decode('ascii')
    except AttributeError:
        pass
    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 Generator(bit_generator())
コード例 #4
0
def test_32():
    def next_raw(vp):
        return np.iinfo(np.uint32).max

    bg = UserBitGenerator(next_raw, 32)
    assert bg.random_raw() == np.iinfo(np.uint32).max
    gen = Generator(bg)
    assert gen.integers(0, 2**64, dtype=np.uint64) == np.iinfo(np.uint64).max
    np.testing.assert_allclose(gen.random(), (2**53 - 1) / (2**53), rtol=1e-14)
    assert "UserBitGenerator(Python)" in repr(bg)
コード例 #5
0
def test_cfunc_smoke(split_mix):
    bgf = UserBitGenerator.from_cfunc(
        split_mix.next_raw,
        split_mix.next_64,
        split_mix.next_32,
        split_mix.next_double,
        split_mix.state_address,
        state_getter=split_mix.state_getter,
        state_setter=split_mix.state_setter,
    )
    gen = Generator(bgf)
    gen.standard_normal(size=10)
    assert bgf.state == split_mix.state_getter()
    gen.standard_normal(dtype=np.float32)
    assert bgf.state == split_mix.state_getter()
    gen.integers(0, 2**63, dtype=np.uint64, size=10)
    assert bgf.state == split_mix.state_getter()
    old_state = bgf.state.copy()
    old_state["state"] = 1
    bgf.state = old_state
    assert bgf.state == split_mix.state_getter()
コード例 #6
0
ファイル: _pickle.py プロジェクト: bashtage/randomgen
def __generator_ctor(
        bit_generator_name: Union[bytes, str] = "MT19937") -> Generator:
    """
    Pickling helper function that returns a Generator object

    Parameters
    ----------
    bit_generator_name: str
        String containing the core BitGenerator

    Returns
    -------
    rg: Generator
        Generator using the named core BitGenerator
    """
    bit_generator_name = _decode(bit_generator_name)
    assert isinstance(bit_generator_name, str)
    bit_generator = _get_bitgenerator(bit_generator_name)
    with warnings.catch_warnings():
        warnings.filterwarnings("ignore", category=FutureWarning)
        bit_gen = bit_generator()
    return Generator(bit_gen)
コード例 #7
0
def test_no_setter_getter(split_mix):
    bgf = UserBitGenerator.from_cfunc(
        split_mix.next_raw,
        split_mix.next_64,
        split_mix.next_32,
        split_mix.next_double,
        split_mix.state_address,
    )
    gen = Generator(bgf)
    gen.standard_normal(size=10)
    gen.standard_normal(size=10, dtype=np.float32)
    gen.integers(0, 2**63, dtype=np.uint64, size=10)
    with pytest.raises(NotImplementedError):
        bgf.state
    with pytest.raises(NotImplementedError):
        bgf.state = {"apple"}

    bgf = UserBitGenerator.from_cfunc(
        split_mix.next_raw,
        split_mix.next_64,
        split_mix.next_32,
        split_mix.next_double,
        split_mix.state_address,
        state_getter=split_mix.state_getter,
    )
    assert isinstance(bgf.state, dict)
    with pytest.raises(NotImplementedError):
        bgf.state = {"apple"}

    bgf = UserBitGenerator.from_cfunc(
        split_mix.next_raw,
        split_mix.next_64,
        split_mix.next_32,
        split_mix.next_double,
        split_mix.state_address,
        state_setter=split_mix.state_setter,
    )
    bgf.state = split_mix.state_getter()
コード例 #8
0
def __generator_ctor(bit_generator_name="MT19937"):
    """
    Pickling helper function that returns a Generator object

    Parameters
    ----------
    bit_generator_name: str
        String containing the core BitGenerator

    Returns
    -------
    rg: Generator
        Generator using the named core BitGenerator
    """
    try:
        bit_generator_name = bit_generator_name.decode("ascii")
    except AttributeError:
        pass
    bit_generator = _get_bitgenerator(bit_generator_name)
    with warnings.catch_warnings():
        warnings.filterwarnings("ignore", category=FutureWarning)
        bit_gen = bit_generator()
    return Generator(bit_gen)
コード例 #9
0
def test_against_ref(func, pcg_python, pcg_native):
    a = func(Generator(pcg_python))
    b = func(Generator(pcg_native))
    np.testing.assert_allclose(a, b)