Skip to main content
`Ctrl`+`K`

# 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 an `int` or `array_like[ints]` is passed, then it will be passed to `SeedSequence` to derive the initial `BitGenerator` state. One may also pass in a `SeedSequence` 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 a `Generator` 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 the `SFC64` 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

  [1]

  “PractRand”

  [2]

  “Random Invertible Mapping Statistics”

## State

`state` | Get or set the PRNG state

## Extending

`cffi` | CFFI interface
`ctypes` | ctypes interface