QMC Software Directory
A community-maintained directory of software related to quasi-Monte Carlo methods.
This directory collects software related to quasi-Monte Carlo methods across organizations, programming languages, and application areas. It complements the QMCSoftware project pages, which describe software maintained by our organization.
The information is community-maintained. Please verify current capabilities, support, and licensing with each project. Development status reflects the information most recently contributed to this directory.
We use the following abbreviations:
- LD: low discrepancy
- LDS: low-discrepancy sequence
- QMC: quasi-Monte Carlo
| Software | Language | Development status | Contact |
|---|---|---|---|
| Boost Random Number LibraryPart of the Boost C++ Libraries, offering a wide range of random number generators, including some LDS | C++ | Mature | — |
| BoTorchBayesian optimization library that leverages PyTorch’s (Q)MC samplers | Python | Active | Meta / BoTorch developers |
| BRODACommercial software offering a range of QMC methods for financial modeling and risk analysis | C++ / Fortran | Mature | Sergei Kucherenko |
| ChaospyPython library for uncertainty quantification with quasi-random sampling rules including Halton, Hammersley, Korobov, and Sobol sequences | Python | Active | Chaospy developers |
| DakotaSoftware toolkit for optimization and uncertainty quantification, including support for lattices and digital nets | C++ | Mature | Pieterjan Robbe |
| Fast CBC constructionsMatlab/Octave routines for fast component-by-component construction of rank-1 lattice rules, lattice sequences, and polynomial lattice sequences | MATLAB / Octave | Mature | Dirk Nuyens |
| GAILGuaranteed Automatic Integration Library for one-, multi-, and infinite-dimensional integration with rigorous error guarantees | MATLAB | Mature | Sou-Cheng ChoiFred HickernellYuhan Ding |
| GNU Scientific LibraryC library providing quasi-random sequence generators including Niederreiter, Sobol, Halton, and reverse Halton sequences | C | Mature | GSL Team |
| HaltonRandom-start randomly permuted Halton sequences | C++ | Mature | — |
| Intel oneMKLHigh-performance math library whose RNG domain includes Sobol and Niederreiter quasi-random number generators | C++ / Data Parallel C++ | Mature | Intel / oneAPI developers |
| LatNet BuilderLibrary for constructing LD lattice rules and digital nets | C++ / Python | ActiveCollaboration welcome | Pierre L’Ecuyer |
| Lattice / Sobol’Generating vectors for Sobol’ sequences and lattice rules | plain text | Mature | Frances KuoStephen Joe |
| LDDataDatabase of LD generators | plain text | ActiveCollaboration welcome | Aleksei Sorokin |
| Magic Point ShopQMC point generators and generating vectors for digital sequences and lattice sequences | C++, MATLAB, Python, plain text | Mature | Dirk Nuyens |
| MATLAB Statistics & Machine Learning ToolboxProduces quasi-random samples in the unit hypercube, including Sobol and Halton sequences | MATLAB | Mature | Liam Walsh |
| NAG Quasi-Random Number GeneratorsNAG’s implementation of quasi-random number generators for use in Monte Carlo simulations | Fortran, C, C++ | Mature | — |
| NVIDIA cuRANDNVIDIA’s library for generating random and quasi-random numbers on GPUs | C++ / CUDA | Mature | — |
| OpenTURNSOpen-source uncertainty quantification platform with LDS including Faure, Halton, reverse Halton, Haselgrove, and Sobol sequences | Python / C++ | Active | Michaël BaudinAnne DutfoyBertrand IoossAnne-Laure Popelin |
| Owen’s Scrambled PointsNested uniform scrambling of Sobol’ sequences and pointer to randomized Halton sequences | R | Mature | Art Owen |
| PyDOE3Python 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 EnginePyTorch’s implementation of the Sobol sequence for generating LD samples in machine learning applications | Python | Active | — |
| QMC Algorithms for Graphics SoftwareReference with compact copy-and-paste algorithms for LDS | C++ / CUDA-style pseudocode | Reference | Alexander Keller; Carsten Wächter; Nikolaus Binder |
| QMC4PDESoftware 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 |
| QMCPyMulti-purpose library featuring various LDS and data-driven error estimation | Python | ActiveCollaboration welcome | Sou-Cheng ChoiFred HickernellAleksei Sorokin |
| qrngR package for generating LDS, including Sobol and Halton sequences, for statistical computing and data analysis | R | Active | Marius HofertChristiane Lemieux |
| QuasiMonteCarlo.jlJulia package for generating LDS and performing QMC integration, designed for high-performance scientific computing | Julia | Active | Chris Rackauckas |
| randtoolboxR package providing pseudo-random and quasi-random generators, including Torus, Sobol, Halton, and Van der Corput sequences | R | Active | Christophe Dutang |
| scipy.stats.qmcPart 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 ProbabilityTensorFlow function for generating deterministic or randomized Halton LDS | Python | Active | TensorFlow Probability developers |
| UM-BridgeSoftware framework for uncertainty quantification and modeling software packages | Multiple | Active | UM-Bridge team |
No matching items
Corrections and additions
Please submit a pull request to the Website repository with changes to data/qmc-software.yml, or email updates to Fred Hickernell.