doRNGversion {doRNG} | R Documentation |
Back Compatibility Option for doRNG
Description
Sets the behaviour of %dorng% foreach loops from a given version number.
Usage
doRNGversion(x)
Arguments
x |
version number to switch to, or missing to get the currently
active version number, or |
Value
a character string
If x
is missing this function returns the version number from the
current behaviour.
If x
is specified, the function returns the old value of the
version number (invisible).
Behaviour changes in versions
- 1.4
The behaviour of
doRNGseed
, and therefore of%dorng%
loops, changed in the case where the current RNG was L'Ecuyer-CMRG. Usingset.seed
before a non-seeded loop used not to be identical to seeding via.options.RNG
. Another bug was that non-seeded loops would share most of their RNG seed!- 1.7.4
Prior to this version, in the case where the RNG had not been called yet, the first seeded
%dorng%
loops would not give the identical results as subsequent loops despite using the same seed (see https://github.com/renozao/doRNG/issues/12).This has been fixed in version 1.7.4, where the RNG is called once (
sample(NA)
), whenever the .Random.seed is not found in global environment.
Examples
## Seeding when current RNG is L'Ecuyer-CMRG
RNGkind("L'Ecuyer")
doRNGversion("1.4")
# in version >= 1.4 seeding behaviour changed to fix a bug
set.seed(123)
res <- foreach(i=1:3) %dorng% runif(1)
res2 <- foreach(i=1:3) %dorng% runif(1)
stopifnot( !identical(attr(res, 'rng')[2:3], attr(res2, 'rng')[1:2]) )
res3 <- foreach(i=1:3, .options.RNG=123) %dorng% runif(1)
stopifnot( identical(res, res3) )
# buggy behaviour in version < 1.4
doRNGversion("1.3")
res <- foreach(i=1:3) %dorng% runif(1)
res2 <- foreach(i=1:3) %dorng% runif(1)
stopifnot( identical(attr(res, 'rng')[2:3], attr(res2, 'rng')[1:2]) )
res3 <- foreach(i=1:3, .options.RNG=123) %dorng% runif(1)
stopifnot( !identical(res, res3) )
# restore default RNG
RNGkind("default")
# restore to current doRNG version
doRNGversion(NULL)