mergeron.core.pseudorandom_numbers

Functions for generating synthetic data under specified distributions.

Uses multiple CPUs when available, with PCG64DXSM as the PRNG. [1]

References

Module Contents

mergeron.core.pseudorandom_numbers.DEFAULT_DIST_PARMS : mergeron.ArrayFloat[source]
mergeron.core.pseudorandom_numbers.DEFAULT_BETA_DIST_PARMS : mergeron.ArrayFloat[source]
mergeron.core.pseudorandom_numbers.prng(_s=None, /)[source]

Return a psure-random number generator.

Parameters:
_s : numpy.random.SeedSequence | None

SeedSequence, for generating repeatable, non-overlapping random numbers.

Returns:

A numpy random generator.

Return type:

numpy.random.Generator

mergeron.core.pseudorandom_numbers.seed_sequencer(_len=3, /, *, generated_entropy=None)[source]

Return specified number of SeedSequences, for generating random variates.

Initializes a specified number of SeedSequences based on a set of 10 generated “seeds” in a hard-coded list. If the required number of random variates is larger than 10, the user must first generate a sufficient number of seeds to draw upon for initializing SeedSequences. The generated entropy can be reused in subsequent calls to this function.

Parameters:
_len : int

Number of SeedSequences to initialize

generated_entropy : collections.abc.Sequence[int] | None

A list of integers with length not less than _s, to be used as seeds for initializing SeedSequences. A list of 10 appropriately generated integers is used as default.

Returns:

A list of numpy SeedSequence objects, which can be used to seed prng() or to spawn seed sequences that can be used as seeds to generate non-overlapping streams in parallel. [2]

Raises:

ValueError – When, \(\_sseq\_list\_len > max(10, len(generated\_entropy))\).

Return type:

tuple[numpy.random.SeedSequence, Ellipsis]

References

class mergeron.core.pseudorandom_numbers.MultithreadedRNG[source]

Fill given array on demand with pseudo-random numbers as specified.

Random number generation is multithreaded, using twice the number of threads as available CPU cores by default. If a seed sequence is provided, it is used in a thread-safe way to generate repeatable i.i.d. draws. All arguments are validated before commencing multithreaded random number generation.

values : mergeron.ArrayDouble[source]

Output array to which generated data are over-written

Array-length defines the number of i.i.d. (vector) draws.

dist_type : Literal['Beta', 'Dirichlet', 'Gaussian', 'Normal', 'Random', 'Uniform'][source]

Distribution for the generated random numbers.

Default is “Uniform”.

dist_parms : mergeron.ArrayFloat[source]

Parameters, if any, for tailoring random number generation

seed_sequence : numpy.random.SeedSequence | None[source]

Seed sequence for generating random numbers.

nthreads : int[source]

Number of threads to spawn for random number generation.

fill()[source]

Fill the provided output array with random number draws as specified.