Learn R Programming

rngtools (version 1.5.2)

RNGseq: Generate Sequence of Random Streams

Description

These functions are used to generate independent streams of random numbers.

Usage

RNGseq(n, seed = NULL, ..., simplify = TRUE, version = 2)

RNGseq_seed(seed = NULL, normal.kind = NULL, sample.kind = NULL, verbose = FALSE, version = 2)

Arguments

n

Number of streams to be created

seed

seed specification used to initialise the set of streams using RNGseq_seed.

...

extra arguments passed to RNGseq_seed.

simplify

a logical that specifies if sequences of length 1 should be unlisted and returned as a single vector.

version

version of the function to use, to reproduce old behaviours. Version 1 had a bug which made the generated stream sequences share most of their seeds (!), as well as being not equivalent to calling set.seed(seed); RNGseq_seed(NULL). Version 2 fixes this bug.

normal.kind

Type of Normal random generator passed to base::RNGkind. See RNG.

sample.kind

Type of Discrete Uniform random generator passed to base::RNGkind. See RNG. Note that this argument is valid for R >= 3.6.0, and an error will be thrown if one tries to use it in previous versions of R.

verbose

logical to toggle verbose messages

Value

a list of integer vectors (or a single integer vector if n=1 and unlist=TRUE).

a 7-length numeric vector.

Functions

  • RNGseq: Creates a given number of seeds for L'Ecuyer's RNG, that can be used to seed parallel computation, making them fully reproducible.

    This ensures complete reproducibility of the set of run. The streams are created using L'Ecuyer's RNG, implemented in R core since version 2.14.0 under the name "L'Ecuyer-CMRG" (see RNG).

    Generating a sequence without specifying a seed uses a single draw of the current RNG. The generation of a sequence using seed (a single or 6-length numeric) a should not affect the current RNG state.

  • RNGseq_seed: generates the -- next -- random seed used as the first seed in the sequence generated by RNGseq.

See Also

RNGseq

Examples

Run this code
# NOT RUN {
RNGseq(3)
RNGseq(3)
RNGseq(3, seed=123)
# or identically
set.seed(123)
identical(RNGseq(3), RNGseq(3, seed=123))
# }
# NOT RUN {
RNGseq(3, seed=1:6, verbose=TRUE)
# select Normal kind
RNGseq(3, seed=123, normal.kind="Ahrens")


## generate a seed for RNGseq
# random  
RNGseq_seed() 
RNGseq_seed()
RNGseq_seed(NULL)
# fixed
RNGseq_seed(1)
RNGseq_seed(1:6)

# `RNGseq_seed(1)` is identical to 
set.seed(1)
s <- RNGseq_seed()
identical(s, RNGseq_seed(1))
# }
# NOT RUN {
 
# }

Run the code above in your browser using DataLab