Test spawning new generators and bit_generators directly.
()
| 149 | |
| 150 | |
| 151 | def test_generator_spawning(): |
| 152 | """ Test spawning new generators and bit_generators directly. |
| 153 | """ |
| 154 | rng = np.random.default_rng() |
| 155 | seq = rng.bit_generator.seed_seq |
| 156 | new_ss = seq.spawn(5) |
| 157 | expected_keys = [seq.spawn_key + (i,) for i in range(5)] |
| 158 | assert [c.spawn_key for c in new_ss] == expected_keys |
| 159 | |
| 160 | new_bgs = rng.bit_generator.spawn(5) |
| 161 | expected_keys = [seq.spawn_key + (i,) for i in range(5, 10)] |
| 162 | assert [bg.seed_seq.spawn_key for bg in new_bgs] == expected_keys |
| 163 | |
| 164 | new_rngs = rng.spawn(5) |
| 165 | expected_keys = [seq.spawn_key + (i,) for i in range(10, 15)] |
| 166 | found_keys = [rng.bit_generator.seed_seq.spawn_key for rng in new_rngs] |
| 167 | assert found_keys == expected_keys |
| 168 | |
| 169 | # Sanity check that streams are actually different: |
| 170 | assert new_rngs[0].uniform() != new_rngs[1].uniform() |
| 171 | |
| 172 | |
| 173 | def test_non_spawnable(): |