Generation Functions#

nvplRandGenerate#

nvplRandGenerate() is used to generate pseudo- or quasirandom bits of output for XORWOW, MRG32k3a, MT19937, Philox_4x32_10, PCG, SOBOL32, and Scrambled SOBOL32 generators. Each output element is a 32-bit unsigned integer where all bits are random. nvplRandGenerate() returns NVPL_RAND_STATUS_GENERATOR_TYPE_ERROR for SOBOL64 or Scrambled SOBOL64 generators.

nvplRandStatus_t nvplRandGenerate(
nvplRandGenerator_t gen,
unsigned int *outputPtr,
const size_t num,
)

nvplRandGenerateLongLong#

nvplRandGenerateLongLong() is used to generate pseudo- or quasirandom bits of output for PCG, SOBOL64, and Scrambled SOBOL64 generators. Each output element is a 64-bit unsigned integer where all bits are random. nvplRandGenerateLongLong() returns NVPL_RAND_STATUS_GENERATOR_TYPE_ERROR for SOBOL32 or Scrambled SOBOL32 generators, as well all the pseudorandom generators except PCG.

nvplRandStatus_t nvplRandGenerateLongLong(
nvplRandGenerator_t gen,
unsigned long long *outputPtr,
const size_t num,
)

nvplRandGenerateUniform#

nvplRandGenerateUniform() is used to generate uniformly distributed FP32 values in the range of (0.0, 1.0], where 0.0 is excluded and 1.0 is included.

nvplRandStatus_t nvplRandGenerateUniform(
nvplRandGenerator_t gen,
float *outputPtr,
const size_t num,
)

nvplRandGenerateUniformDouble#

nvplRandGenerateUniformDouble() is used to generate uniformly distributed FP64 values in the range of (0.0, 1.0], where 0.0 is excluded and 1.0 is included.

nvplRandStatus_t nvplRandGenerateUniformDouble(
nvplRandGenerator_t gen,
double *outputPtr,
const size_t num,
)

nvplRandGenerateUniformRange#

nvplRandGenerateUniformRange() is used to generate uniformly distributed FP32 values in the range of (start, end], where start is excluded and end is included.

nvplRandStatus_t nvplRandGenerateUniformRange(
nvplRandGenerator_t gen,
float *outputPtr,
const size_t num,
const float start,
const float end,
)

nvplRandGenerateUniformRangeDouble#

nvplRandGenerateUniformRangeDouble() is used to generate uniformly distributed FP64 values in the range of (start, end], where start is excluded and end is included.

nvplRandStatus_t nvplRandGenerateUniformDouble(
nvplRandGenerator_t gen,
double *outputPtr,
const size_t num,
)

nvplRandGenerateNormal#

nvplRandGenerateNormal() is used to generate normally distributed FP32 values with the given mean and standard deviation.

nvplRandStatus_t nvplRandGenerateNormal(
nvplRandGenerator_t gen,
float *outputPtr,
const size_t num,
const float mean,
const float stddev,
)

nvplRandGenerateNormalDouble#

nvplRandGenerateNormal() is used to generate normally distributed FP64 values with the given mean and standard deviation.

nvplRandStatus_t nvplRandGenerateNormalDouble(
nvplRandGenerator_t gen,
double *outputPtr,
const size_t num,
const double mean,
const double stddev,
)

nvplRandGenerateDistribution#

nvplRandGenerateDistribution() is used to generate FP32 values based on the continuous distribution type and parameters specified by config. NVPL RAND library supports the following continuous distributions:

  • Uniform

  • Normal

  • Lognormal

  • Exponential

  • Gamma

  • Beta

  • Dirichlet

nvplRandStatus_t nvplRandGenerateDistribution(
nvplRandGenerator_t gen,
float *outputPtr,
const nvplRandDistributionConfig_t config,
const size_t num,
)

nvplRandGenerateDistributionDouble#

nvplRandGenerateDistributionDouble() is used to generate FP64 values based on the continuous distribution type and parameters specified by config.

nvplRandStatus_t nvplRandGenerateDistributionDouble(
nvplRandGenerator_t gen,
double *outputPtr,
const nvplRandDistributionConfig_t config,
const size_t num,
)

nvplRandGenerateDistributionDiscrete#

nvplRandGenerateDistributionDiscrete() is used to generate unsigned 32-bit interger values based on the discrete distribution type and parameters specified by config. NVPL RAND library supports the following discrete distributions:

  • Poisson

  • Bernoulli

  • Categorical

  • Binomial

  • Multinomial

nvplRandStatus_t nvplRandGenerateDistributionDiscrete(
nvplRandGenerator_t gen,
unsigned int *outputPtr,
const nvplRandDistributionConfig_t distConfig,
const size_t num,
)