SFC64 Small Fast Chaotic PRNG¶
- class numpy.random.SFC64(seed=None)¶
BitGenerator for Chris Doty-Humphrey’s Small Fast Chaotic PRNG.
- Parameters
- seed{None, int, array_like[ints], SeedSequence}, optional
A seed to initialize the
BitGenerator
. If None, then fresh, unpredictable entropy will be pulled from the OS. If anint
orarray_like[ints]
is passed, then it will be passed toSeedSequence
to derive the initialBitGenerator
state. One may also pass in aSeedSequence
instance.
Notes
SFC64
is a 256-bit implementation of Chris Doty-Humphrey’s Small Fast Chaotic PRNG ([1]).SFC64
has a few different cycles that one might be on, depending on the seed; the expected period will be about \(2^{255}\) ([2]).SFC64
incorporates a 64-bit counter which means that the absolute minimum cycle length is \(2^{64}\) and that distinct seeds will not run into each other for at least \(2^{64}\) iterations.SFC64
provides a capsule containing function pointers that produce doubles, and unsigned 32 and 64- bit integers. These are not directly consumable in Python and must be consumed by aGenerator
or similar object that supports low-level access.State and Seeding
The
SFC64
state vector consists of 4 unsigned 64-bit values. The last is a 64-bit counter that increments by 1 each iteration.The input seed is processed by
SeedSequence
to generate the first 3 values, then theSFC64
algorithm is iterated a small number of times to mix.Compatibility Guarantee
SFC64
makes a guarantee that a fixed seed will always produce the same random integer stream.References