• new method dqrrademacher for drawing Rademacher weights (Kyle Butts in #50 fixing #49)
  • Move sampling methods to separate header file, allowing for parallel usage.
  • New method dqrmvnorm sampling from a multivariate normal distribution. This uses the methods implemented in the mvtnorm package and uses dqrnorm.

Breaking changes

  • The initial state of dqrng’s RNG is based on R’s RNG, which used to advance R’s RNG state. The implementation has been changed to preserve R’s RNG state, which is less surprising but can change the outcome of current scripts. (#44 fixing #43)

Other changes

  • For uniform random numbers take short-cut for min == max and throw error for min > max (#34 fixing #33)
  • Make template specialisations inline and include required standard headers (Aaron Lun in #29 fixing #28)
  • Add workaraound for new C++ compiler with old libc (#30 fixing #27)
  • update maintainer’s email address
  • Add R side support for selecting multiple streams for parallel usage.
  • Implement long_jump() for Xo(ro)shiro as alternative to jump() providing fewer streams with longer period.
  • Handle R’s RNG scope properly during initialisation.
  • New functions dqsample and dqsample.int using an unbiased sampling algorithm.
  • Use R_unif_index() instead of unif_rand() to retrieve random data from R’s RNG in generateSeedVectors().
  • Scalar RNGs in the C++ API: dqrng::runif, dqrng::rnorm and dqrng::rexp
  • Use template specializations to avoid compiler warnings during tests (Aaron Lun in #16)
  • Do not expect a particular error message on MacOS and skip exception throwing tests on Solaris.

Breaking changes

  • 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.

Other changes

  • New method generateSeedVectors() for generating a list of random int vectors from R’s RNG. These vectors can be used as seed (Aaron Lun in #10).
  • The initial state of the default RNG is now based on R’s RNG.
  • New RNG: Threefry from package ‘sitmo’
  • Update PCG Headers (c.f. #8)
  • Unit-Tests for the C++ interface
  • Define STRICT_R_HEADERS to prepare for future Rcpp (c.f. #6)
  • Fix critical bug w.r.t. setting seeds
  • Use time in addition to std::random_device as source of the default seed, since std::random_device is deterministic with MinGW (c.f. #2)
  • Add jump() method to Xoshiro256+ and Xorohiro128+
  • New vignette on parallel usage
  • PCG has been patched to compile on Solaris.
  • dqrng_distribution.h can now be used independently of Rcpp
  • Replace xorshift.hpp and xoroshiro.hpp with xoshiro.h. This implementation is directly derived from the original C implementations. It provides v1.0 of Xoroshiro128+ and Xoshiro256+.
  • First public release.