dqrng v0.1.0: breaking changes
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
A new version of dqrng
has made it onto the CRAN servers. This version brings two breaking changes, hence the “larger than usual” change in version number:
- An integer vector instead of a single
int
is used for seeding (Aaron Lun in #10)- Single integer seeds lead to a different RNG state than before.
dqrng::dqset_seed()
expects aRcpp::IntegerVector
instead of anint
- Support for Mersenne-Twister has been removed, Xoroshiro128+ is now the default.
The first change is motivated by the desire to provide more than 32 bits of randomness as seed to the RNG. With this possibility in place, the previously used scrambling of the single 32 bit integer did not make much sense anymore and was therefore removed. The new method generateSeedVectors()
for generating a list of random int
vectors from R’s RNG can be used to generate such seed vector.
The second change is related to a statement in R’s manual: Nor should the C++11 random number library be used …. I think that relates to the implementation-defined distributions and not the generators, but in general one should follow WRE by the letter. So std::mt19937_64
has to go, and unfortunately it cannot be replaced by boost::random::mt19937_64
due to a not-merged pull request. Instead of shipping a fixed version of MT I opted for removal since:
- MT is known to fail certain statistical tests.
- MT is slower than the other generators.
- MT was the only generator that does not support multiple streams of random numbers necessary for parallel operations.
The other usage of random
from C++11 was the default initialization, which used std::random_device
. This is now unnecessary since the initial state of the default RNG is now based on R’s RNG, using the techniques developed for generateSeedVectors()
.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.