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 a`Rcpp::IntegerVector`

instead of an`int`

- 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()`

.