MyNixOS website logo
Description

'Rcpp' Integration of Different "Ziggurat" Normal RNG Implementations.

The Ziggurat generator for normally distributed random numbers, originally proposed by Marsaglia and Tsang (2000, <doi:10.18637/jss.v005.i08>) has been improved upon a few times starting with Leong et al (2005, <doi:10.18637/jss.v012.i07>). This package provides an aggregation in order to compare different implementations in order to provide an 'faster but good enough' alternative for use with R and C++ code.

RcppZiggurat: Rcpp Bindings for Ziggurat RNGs

Build Status License CRAN Downloads Last Commit

Overview

The RcppZiggurat package regroups a number of implementations of the 'Ziggurat' random number generator by Marsaglia and Tsang (JSS, 2000), both in the original version and via the update by Leong, Zhang, Lee, Luk and Villasenor (JSS, 2005).

The purpose of the package is to both study and time these implementations in order to provide a fast N(0,1) generator for use by R. The generators included in R are excellent and very diligently implemented, but not generally the fastest. This package aims to close the performance gap.

You should know what you are doing when deploying this package. If in doubt, stick with the default generators.

Vignette

The package contains a detailed vignette summarizing the methods, the implementation as well as the statistical properties (examined via three different tests) and the generator speed.

Status

The package currently contains six different implementations. Two are standard from the literature: the original Marsaglia and Tsang approach (which should not be used as the resulting generator has be improved as suggested by Leong et al.), the improved Leong et al variant, a version from the GNU GSL, a version from the GNU Gretl econometric program as well as a version from QuantLib.

Demo

The package contains several demo scripts. Try

R> demo(package="RcppZiggurat")

TODO

More testing never hurts, ...

More generators as e.g. the modified Ziggurat implementation suggested by Doornik (though his code is not under an open source licence)

Author

Dirk Eddelbuettel

License

GPL (>= 2)

Metadata

Version

0.1.6

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows