Description Usage Arguments Details Value Examples
Get a L'Ecuyer-CMRG seed either from an input seed or the current RNG state
1 2 3 | as_lecyer_cmrg_seed(seed)
is_lecyer_cmrg_seed(seed)
|
seed |
TRUE or NA, or a numeric vector of length one or seven. |
The as_lecyer_cmrg_seed()
function preserves the current RNG state, that
is, it leaves globalenv()$.Random.seed
intact, which means it also leaved
the RNG kind (RNGkind()
) intact.
Per base::RNGkind()
, a L'Ecuyer-CMRG seed comprise a length-seven integer
vector of format .Random.seed <- c(rng.kind, n)
where length(n) == 6L
and rng.kind
fulfills rng.kind %% 10000L == 407L
.
as_lecyer_cmrg_seed(seed)
returns a L'Ecuyer-CMRG seed, which is a
7-digit integer vector, based on the input seed
.
If already a L'Ecuyer-CMRG seed, then seed
is return as-is.
If a scalar integer, then a random L'Ecuyer-CMRG seed is created based
on this seed as the current RNG state.
If seed = TRUE
and the current seed is already a L'Ecuyer-CMRG seed,
then then current seed (.Random.seed
) is return as-is.
If seed = TRUE
and the current seed is not of the 'L'Ecuyer-CMRG' kind,
or seed = NA
, then a random one is created (based on the current RNG
state).
Any other values, including FALSE, is an error.
is_lecyer_cmrg_seed(seed)
returns TRUE if seed
is L'Ecuyer-CMRG seed,
otherwise FALSE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # The current RNG kind
okind <- RNGkind()
oseed <- globalenv()$.Random.seed
# (a) A L'Ecuyer-CMRG seed based on a numeric-scalar seed
seed1 <- future:::as_lecyer_cmrg_seed(42)
str(seed1)
## int [1:7] 10407 -2133391687 507561766 1260545903 1362917092 -1772566379 -1344458670
# The RNG kind and the RNG state is preserved
stopifnot(
future:::is_lecyer_cmrg_seed(seed1),
identical(RNGkind(), okind),
identical(globalenv()$.Random.seed, oseed)
)
# (b) A L'Ecuyer-CMRG seed based on a L'Ecuyer-CMRG seed
seed2 <- future:::as_lecyer_cmrg_seed(seed1)
str(seed2)
## int [1:7] 10407 -2133391687 507561766 1260545903 1362917092 -1772566379 -1344458670
# The input L'Ecuyer-CMRG seed is returned as-is
stopifnot(identical(seed2, seed1))
# The RNG kind and the RNG state is preserved
stopifnot(
future:::is_lecyer_cmrg_seed(seed2),
identical(RNGkind(), okind),
identical(globalenv()$.Random.seed, oseed)
)
# (c) A L'Ecuyer-CMRG seed based on the current RNG state
seed3 <- future:::as_lecyer_cmrg_seed(TRUE)
str(seed3)
## int [1:7] 10407 495333909 -1491719214 416071979 49340016 1956499377 899435966
stopifnot(future:::is_lecyer_cmrg_seed(seed3))
# All of the above calls preserve the RNG state including the RNG kind
stopifnot(
identical(RNGkind(), okind),
identical(globalenv()$.Random.seed, oseed)
)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.