SeedSequence(entropy=None, *, spawn_key=(), pool_size=4)
SeedSequence mixes sources of entropy in a reproducible way to set the initial state for independent and very probably non-overlapping BitGenerators.
Once the SeedSequence is instantiated, you can call the `generate_state` method to get an appropriately sized seed. Calling `spawn(n) <spawn>` will create ``n`` SeedSequences that can be used to seed independent BitGenerators, i.e. for different threads.
Parameters ---------- entropy : None, int, sequence[int]
, optional The entropy for creating a `SeedSequence`. spawn_key : (), sequence[int]
, optional A third source of entropy, used internally when calling `SeedSequence.spawn` pool_size : nt, optional Size of the pooled entropy to store. Default is 4 to give a 128-bit entropy pool. 8 (for 256 bits) is another reasonable choice if working with larger PRNGs, but there is very little to be gained by selecting another value. n_children_spawned : nt, optional The number of children already spawned. Only pass this if reconstructing a `SeedSequence` from a serialized form.
Notes -----
Best practice for achieving reproducible bit streams is to use the default ``None`` for the initial entropy, and then use `SeedSequence.entropy` to log/pickle the `entropy` for reproducibility:
>>> sq1 = np.random.SeedSequence() >>> sq1.entropy 243799254704924441050048792905230269161 # random >>> sq2 = np.random.SeedSequence(sq1.entropy) >>> np.all(sq1.generate_state(10) == sq2.generate_state(10)) True