PCG64(seed=None)
BitGenerator for the PCG-64 pseudo-random number generator.
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_likeints
`` is passed, then it will be passed to `SeedSequence` to derive the initial `BitGenerator` state. One may also pass in a `SeedSequence` instance.
Notes ----- PCG-64 is a 128-bit implementation of O'Neill's permutation congruential generator (1
_, 2
_). PCG-64 has a period of :math:`2^
` and supports advancing an arbitrary number of steps as well as :math:`2^
` streams. The specific member of the PCG family that we use is PCG XSL RR 128/64 as described in the paper (2
_).
``PCG64`` 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.
Supports the method :meth:`advance` to advance the RNG an arbitrary number of steps. The state of the PCG-64 RNG is represented by 2 128-bit unsigned integers.
**State and Seeding**
The ``PCG64`` state vector consists of 2 unsigned 128-bit values, which are represented externally as Python ints. One is the state of the PRNG, which is advanced by a linear congruential generator (LCG). The second is a fixed odd increment used in the LCG.
The input seed is processed by `SeedSequence` to generate both values. The increment is not independently settable.
**Parallel Features**
The preferred way to use a BitGenerator in parallel applications is to use the `SeedSequence.spawn` method to obtain entropy values, and to use these to generate new BitGenerators:
>>> from numpy.random import Generator, PCG64, SeedSequence >>> sg = SeedSequence(1234) >>> rg = Generator(PCG64(s)) for s in sg.spawn(10)
**Compatibility Guarantee**
``PCG64`` makes a guarantee that a fixed seed and will always produce the same random integer stream.
References ---------- .. 1
`'PCG, A Family of Better Random Number Generators' <http://www.pcg-random.org/>`_ .. 2
O'Neill, Melissa E. `'PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation' <https://www.cs.hmc.edu/tr/hmc-cs-2014-0905.pdf>`_