rnorm_trng: Normal random numbers via TRNG.

View source: R/rnorm_trng.R

rnorm_trngR Documentation

Normal random numbers via TRNG.

Description

Random number generation for the normal distribution using the TRNG C++ library.

Usage

rnorm_trng(n, mean = 0, sd = 1, engine = NULL, parallelGrain = 0L)

Arguments

n

Number of observations.

mean, sd

Parameters of the distribution, with the same meaning as in rnorm. Note however that only scalar values are accepted.

engine

Optional TRNG engine object; if missing or NULL, the current engine controlled via TRNG.Random is used.

parallelGrain

Optional argument controlling the parallel simulation of random variates (see ‘Parallel Simulation’ below for details).

Value

Numeric vector of random variates generated with the given parameters. The length is determined by n.

Parallel Simulation

When a positive value of argument parallelGrain is supplied, random variates are simulated in parallel, provided a parallel random number engine is selected. This is done using RcppParallel via parallelFor, which uses the supplied parallelGrain to control the grain size (the number of threads being controlled by setThreadOptions). The grain size can greatly affect the overhead of performing the required block splitting jump operations and should be selected carefully. Note that TRNG guarantees the outcome of such parallel execution to be equivalent to a purely sequential simulation.

See Also

rnorm, TRNG.Engine, TRNG.Random.

Other TRNG distributions: rbinom_trng(), rlnorm_trng(), rpois_trng(), runif_trng()

Examples

## generate 10 random variates using the current TRNG engine
rnorm_trng(10, mean = 0, sd = 1)

## use a TRNG engine reference class object
r <- yarn2$new()
rnorm_trng(10, mean = 0, sd = 1, engine = r)

## generate 100k random variates in parallel, with 2 threads and 100 grain size
TRNGseed(117)
RcppParallel::setThreadOptions(numThreads = 2L)
x_parallel <- rnorm_trng(100e3, mean = 0, sd = 1, parallelGrain = 100L)
TRNGseed(117)
x_serial <- rnorm_trng(100e3, mean = 0, sd = 1)
identical(x_serial, x_parallel)

miraisolutions/rTRNG documentation built on Feb. 4, 2024, 7:35 p.m.