Quasi-Monte Carlo Software Packages
Note: This page is generated by
scripts/make_qmc_software_page.py. Please do not editdocs/qmc-software.mddirectly; changes will be overwritten when the documentation is regenerated.
This page is intended to be a community-maintained resource for software related to quasi-Monte Carlo methods. Contributions are welcome.
Please submit a pull request targeting the develop branch with corrections or additions to the qmc-software.yml data file.
If you prefer not to use GitHub pull requests, you may instead email updates to Fred Hickernell.
Updating and previewing
The table below is generated from data/qmc-software.yml. We have used the following abbreviations:
- LD: low discrepancy
- LDS: low-discrepancy sequence
- QMC: quasi-Monte Carlo
To preview changes locally:
| Name | Language | Development Status | Contact |
|---|---|---|---|
| Boost Random Number Library Part of the Boost C++ Libraries, offering a wide range of random number generators, including some LDS |
C++ | Mature | |
| BoTorch Bayesian optimization library that leverages PyTorch's (Q)MC samplers |
Python | Active | Meta / BoTorch developers |
| BRODA Commercial software offering a range of QMC methods for financial modeling and risk analysis |
C++ / Fortran | Mature | ✉ Sergei Kucherenko |
| Chaospy Python library for uncertainty quantification with quasi-random sampling rules including Halton, Hammersley, Korobov, and Sobol sequences |
Python | Active | Chaospy developers |
| Dakota Software toolkit for optimization and uncertainty quantification, including support for lattices and digital nets |
C++ | Mature | Pieterjan Robbe |
| Fast CBC constructions Matlab/Octave routines for fast component-by-component construction of rank-1 lattice rules, lattice sequences, and polynomial lattice sequences |
MATLAB / Octave | Mature | Dirk Nuyens |
| GAIL Guaranteed Automatic Integration Library for one-, multi-, and infinite-dimensional integration with rigorous error guarantees |
MATLAB | Mature | Sou-Cheng Choi Fred Hickernell Yuhan Ding |
| GNU Scientific Library C library providing quasi-random sequence generators including Niederreiter, Sobol, Halton, and reverse Halton sequences |
C | Mature | GSL Team |
| Halton Random-start randomly permuted Halton sequences |
C++ | Mature | |
| Intel oneMKL High-performance math library whose RNG domain includes Sobol and Niederreiter quasi-random number generators |
C++ / Data Parallel C++ | Mature | Intel / oneAPI developers |
| LatNet Builder Library for constructing LD lattice rules and digital nets |
C++ / Python | Active Collaboration welcome |
Pierre L’Ecuyer |
| Lattice / Sobol' Generating vectors for Sobol' sequences and lattice rules |
plain text | Mature | Frances Kuo Stephen Joe |
| LDData Database of LD generators |
plain text | Active Collaboration welcome |
Aleksei Sorokin |
| Magic Point Shop QMC point generators and generating vectors for digital sequences and lattice sequences |
C++, MATLAB, Python, plain text | Mature | Dirk Nuyens |
| MATLAB Statistics & Machine Learning Toolbox Produces quasi-random samples in the unit hypercube, including Sobol and Halton sequences |
MATLAB | Mature | ✉ Liam Walsh |
| NAG Quasi-Random Number Generators NAG's implementation of quasi-random number generators for use in Monte Carlo simulations |
Fortran, C, C++ | Mature | |
| NVIDIA cuRAND NVIDIA's library for generating random and quasi-random numbers on GPUs |
C++ / CUDA | Mature | |
| OpenTURNS Open-source uncertainty quantification platform with LDS including Faure, Halton, reverse Halton, Haselgrove, and Sobol sequences |
Python / C++ | Active | Michaël Baudin Anne Dutfoy Bertrand Iooss Anne-Laure Popelin |
| Owen's Scrambled Points Nested uniform scrambling of Sobol' sequences and pointer to randomized Halton sequences |
R | Mature | Art Owen |
| PyDOE3 Python design-of-experiments package with LD designs including Sukharev grids, Sobol, Halton, rank-1 lattices, Korobov sequences, and Cranley-Patterson randomization |
Python | Active | PyDOE3 developers |
| PyTorch Sobol Engine PyTorch's implementation of the Sobol sequence for generating LD samples in machine learning applications |
Python | Active | |
| QMC Algorithms for Graphics Software Reference with compact copy-and-paste algorithms for LDS |
C++ / CUDA-style pseudocode | Reference | Alexander Keller; Carsten Wächter; Nikolaus Binder |
| QMC4PDE Software for constructing randomly shifted lattice rules and interlaced polynomial lattice rules for elliptic PDEs with random diffusion coefficients |
Python / MATLAB / C++ | Active | Frances Y. Kuo; Dirk Nuyens |
| QMCPy Multi-purpose library featuring various LDS and data-driven error estimation |
Python | Active Collaboration welcome |
Sou-Cheng Choi Fred Hickernell Aleksei Sorokin |
| qrng R package for generating LDS, including Sobol and Halton sequences, for statistical computing and data analysis |
R | Active | ✉ Marius Hofert Christiane Lemieux |
| QuasiMonteCarlo.jl Julia package for generating LDS and performing QMC integration, designed for high-performance scientific computing |
Julia | Active | Chris Rackauckas |
| randtoolbox R package providing pseudo-random and quasi-random generators, including Torus, Sobol, Halton, and Van der Corput sequences |
R | Active | Christophe Dutang |
| scipy.stats.qmc Part of the SciPy library, providing LDS generators and sampling methods for scientific computing in Python |
Python | Active | Pamphile Roy |
| Stochastic Simulation in Java (SSJ) Java library for stochastic simulation, including LDS generators and sampling methods |
Java | Active | Pierre L’Ecuyer |
| TensorFlow Probability TensorFlow function for generating deterministic or randomized Halton LDS |
Python | Active | TensorFlow Probability developers |
| UM-Bridge Software framework for uncertainty quantification and modeling software packages |
Multiple | Active | UM-Bridge team |