Skip to content

Commit e7446b9

Browse files
committed
MAINT: use RandomState._bit_generator directly
1 parent f9e02f7 commit e7446b9

File tree

3 files changed

+5
-10
lines changed

3 files changed

+5
-10
lines changed

numpy/random/_generator.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ from numpy import (
1717
uint32,
1818
uint64,
1919
)
20-
from numpy.random import BitGenerator, SeedSequence
20+
from numpy.random import BitGenerator, SeedSequence, RandomState
2121
from numpy._typing import (
2222
ArrayLike,
2323
NDArray,
@@ -782,5 +782,5 @@ class Generator:
782782
def shuffle(self, x: ArrayLike, axis: int = ...) -> None: ...
783783

784784
def default_rng(
785-
seed: None | _ArrayLikeInt_co | SeedSequence | BitGenerator | Generator = ...
785+
seed: None | _ArrayLikeInt_co | SeedSequence | BitGenerator | Generator | RandomState = ...
786786
) -> Generator: ...

numpy/random/_generator.pyx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5073,11 +5073,7 @@ def default_rng(seed=None):
50735073
# Pass through a Generator.
50745074
return seed
50755075
elif isinstance(seed, np.random.RandomState):
5076-
rs_state = seed.get_state(legacy=False)
5077-
klass = getattr(np.random, rs_state['bit_generator'])
5078-
bg = klass()
5079-
bg.state = rs_state
5080-
gen = np.random.Generator(bg)
5076+
gen = np.random.Generator(seed._bit_generator)
50815077
return gen
50825078

50835079
# Otherwise we need to instantiate a new BitGenerator and Generator as

numpy/random/tests/test_direct.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,16 +565,15 @@ def test_coercion_RandomState_Generator(self):
565565
rs = RandomState(1234)
566566
rg = default_rng(rs)
567567
assert isinstance(rg.bit_generator, MT19937)
568-
569-
assert_allclose(rg.random(), rs.rand())
568+
assert rg.bit_generator is rs._bit_generator
570569

571570
# RandomState with a non MT19937 bit generator
572571
_original = np.random.get_bit_generator()
573572
bg = PCG64(12342298)
574573
np.random.set_bit_generator(bg)
575574
rs = np.random.mtrand._rand
576575
rg = default_rng(rs)
577-
assert_allclose(rg.random(), rs.rand())
576+
assert rg.bit_generator is bg
578577

579578
# vital to get global state back to original, otherwise
580579
# other tests start to fail.

0 commit comments

Comments
 (0)