Generator Types¶
Random number generators are created by passing a type to nvplRandCreateGenerator()
. There are nine types of random number generators in NVPL RAND library, that fall into two categories:
pseudorandom number generators:
NVPL_RAND_RNG_PSEUDO_XORWOW
, implemented using the XORWOW algorithm, a member of the xor-shift family of pseudorandom number generators [1].NVPL_RAND_RNG_PSEUDO_MRG32K3A
, a member of the Combined Multiple Recursive family of pseudorandom number generators [2].NVPL_RAND_RNG_PSEUDO_PHILOX4_32_10
, a member of Philox family, which is one of the three non-cryptographic Counter Based Random Number Generators presented on SC11 conference by D. E. Shaw Research [3].NVPL_RAND_RNG_PSEUDO_PCG
, implemented using the permuted congrential generation algorithm developed in 2014 by O’Neill [4].NVPL_RAND_RNG_PSEUDO_MT19937
, a member of the Mersenne Twister family of pseudorandom number generators [5].
Note
NVPL_RAND_RNG_PSEUDO_MT19937
supports only single-threaded random number generation.
quasirandom number generators [6]:
NVPL_RAND_RNG_QUASI_SOBOL32
, a Sobol’ generator of 32-bit sequences.NVPL_RAND_RNG_QUASI_SCRAMBLED_SOBOL32
, a scrambled Sobol’ generator of 32-bit sequences.NVPL_RAND_RNG_QUASI_SOBOL64
, a Sobol’ generator of 64-bit sequences.NVPL_RAND_RNG_QUASI_SCRAMBLED_SOBOL64
, a scrambled Sobol’ generator of 64-bit sequences.
All of the quasirandom variants generate sequences in up to 20,000 dimensions.