- Fix an UBSAN error found by CRAN (#90 fixing #89)
- Fix a compilation error when the compiler does not provide a 128bit integer type (#90 fixing #88)
- Disable PCG64 on MacOS PowerPC (#91 fixing #88)
- The default RNG has changed from Xoroshiro128+ to Xoroshiro128++. The older generators Xoroshiro128+ and Xoshiro256+ are still available but should only be used for backward compatibility or for generating floating point numbers, i.e. not sampling etc. (#57 fixing #56)
- The
dqrng::rng64_t
type has been changed to useRcpp::XPtr
instead ofstd::shared_ptr
and the functions fromdqrng_sample.h
now expect a reference todqrng::random_64bit_generator
instead ofdqrng::rng64_t
(#70 fixing #63)
- Decoupled the 'sitmo' package. It is now possible to use, e.g., the distribution functions from the header-only library without having an explicit
LinkingTo: sitmo
. - Make the internal RNG accessible from the outside (Henrik Sloot fixing #41 in #58)
- Add Xoroshiro128**/++ and Xoshiro256**/++ to
xoshiro.h
- Allow uniform and normal distributions to be registered as user-supplied RNG within R. This happens automatically if the option
dqrng.register_methods
is set toTRUE
. - Add missing inline attributes and limit the included Rcpp headers in
dqrng_types.h
(#75 together with Paul Liétar) - Add I/O methods for the RNG's internal state (fixing #66 in #78)
- Extend
random_64bit_generator
with additional convenience methods (fixing #64 in #79)- A
clone(stream)
method to allow using the global RNG state for parallel computation. Note that for consistency with the other provided RNGs,stream
is counted relative to the current stream for PCG64. - New methods
variate<dist>(param)
,generate<dist>(container, param)
etc. using and inspired byrandutils
.
- A
- The scalar functions
dqrng::runif
,dqrng::rnorm
anddqrng::rexp
available fromdqrng.h
have been deprecated and will be removed in a future release. Please use the more flexible and fasterdqrng::random_64bit_accessor
together withvariate<Dist>()
instead. The same applies todqrng::uniform01
fromdqrng_distribution.h
, which can be replaced by the member functiondqrng::random_64bit_generator::uniform01
. - New template function
dqrng::extra::parallel_generate
indqrng_extra/parallel_generate.h
as an example for using the global RNG in a parallel context (fixing #77 in #82 together with Philippe Grosjean)
- Recreate RcppExports.cpp with current development version of Rcpp to fix WARN on CRAN
- 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 themvtnorm
package and usesdqrnorm
.
- 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)
- 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 workaround 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 tojump()
providing fewer streams with longer period. - Handle R's RNG scope properly during initialisation.
- New functions
dqsample
anddqsample.int
using an unbiased sampling algorithm. - Use
R_unif_index()
instead ofunif_rand()
to retrieve random data from R's RNG ingenerateSeedVectors()
. - 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.
- 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.
- New method
generateSeedVectors()
for generating a list of randomint
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, sincestd::random_device
is deterministic with MinGW (c.f. #2) - Add jump() method to Xoshiro256+ and Xoroshiro128+
- 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
andxoroshiro.hpp
withxoshiro.h
. This implementation is directly derived from the original C implementations. It provides v1.0 of Xoroshiro128+ and Xoshiro256+.
- First public release.