flopscope.

flopscope.numpy.random.default_rng

fnp.random.default_rng(seed=None)[flopscope source]

default_rng(seed=None) Construct a new Generator with the default BitGenerator (PCG64).

Adapted from NumPy docs np.random.default_rng

Arearandom
Typefree
Cost
0
Flopscope Context

Construct a new Generator with default BitGenerator.

Parameters

seed:{None, int, array_like[ints], SeedSequence, BitGenerator, Generator, RandomState}, 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 all values must be non-negative and will be passed to SeedSequence to derive the initial BitGenerator state. One may also pass in a SeedSequence instance. Additionally, when passed a BitGenerator, it will be wrapped by Generator. If passed a Generator, it will be returned unaltered. When passed a legacy RandomState instance it will be coerced to a Generator.

Returns

:Generator

The initialized generator object.

Notes

If seed is not a BitGenerator or a Generator, a new BitGenerator is instantiated. This function does not manage a default global instance.

See seeding_and_entropy for more information about seeding.

Examples

default_rng is the recommended constructor for the random number class Generator. Here are several ways we can construct a random number generator using default_rng and the Generator class.

Here we use default_rng to generate a random float:

>>> import flopscope.numpy as fnp
>>> rng = flops.random.default_rng(12345)
>>> print(rng)
Generator(PCG64)
>>> rfloat = rng.random()
>>> rfloat
0.22733602246716966
>>> type(rfloat)
<class 'float'>

Here we use default_rng to generate 3 random integers between 0 (inclusive) and 10 (exclusive):

>>> import flopscope.numpy as fnp
>>> rng = flops.random.default_rng(12345)
>>> rints = rng.integers(low=0, high=10, size=3)
>>> rints
array([6, 2, 7])
>>> type(rints[0])
<class 'flops.int64'>

Here we specify a seed so that we have reproducible results:

>>> import flopscope.numpy as fnp
>>> rng = flops.random.default_rng(seed=42)
>>> print(rng)
Generator(PCG64)
>>> arr1 = rng.random((3, 3))
>>> arr1
array([[0.77395605, 0.43887844, 0.85859792],
       [0.69736803, 0.09417735, 0.97562235],
       [0.7611397 , 0.78606431, 0.12811363]])

If we exit and restart our Python interpreter, we'll see that we generate the same random numbers again:

>>> import flopscope.numpy as fnp
>>> rng = flops.random.default_rng(seed=42)
>>> arr2 = rng.random((3, 3))
>>> arr2
array([[0.77395605, 0.43887844, 0.85859792],
       [0.69736803, 0.09417735, 0.97562235],
       [0.7611397 , 0.78606431, 0.12811363]])