A Julia port of QMCPy — quasi-Monte Carlo point generators, measure transforms, and adaptive stopping criteria for high-dimensional numerical integration.
Quasi-Monte Carlo (QMC) methods approximate multivariate integrals using four interacting components: a discrete distribution (low-discrepancy sequence), a true measure (target probability space), an integrand (function to evaluate), and a stopping criterion (adaptive error control). QuasiMC.jl provides plug-and-play implementations of each, following the same abstract-type framework as QMCPy so that components from both libraries compose naturally.
From a terminal, start Julia:
juliaThen run:
using Pkg; Pkg.add(url="https://github.com/QMCSoftware/QuasiMC.jl")
using QuasiMC
dd = Lattice(3; randomize=true, seed=7)
f = Keister(Gaussian(dd; covariance=0.5))
sc = CubQMCLatticeG(f; abs_tol=1e-3)
result = integrate(sc)
println("Estimate: $(round(result.solution, digits=5))")
println("Exact: $(round(keister_exact(3), digits=5))")Quit Julia with Ctrl-D or exit().
The QuasiMC.jl documentation contains a detailed API reference with doctests and a collection of rendered demo notebooks. Good starting points:
- Introduction notebook and quickstart notebook
- Mathematical description of components
- Full demo list — 26 notebooks covering sampling, multilevel QMC, Bayesian optimization, sensitivity analysis, and more
- Fred Hickernell's 2020 MCQMC tutorial video (QMCPy; concepts apply directly)
- Aleksei Sorokin's 2023 PyData Chicago tutorial (QMCPy; concepts apply directly)
- Publications on the development and use of QMCPy
In the Julia REPL (Read-Eval-Print Loop, an interactive command-line environment for Julia), enter help mode by typing ? at the julia> prompt. The prompt changes to help?>, and then you can type the object name:
julia> using QuasiMC
julia> ?
help?> CubQMCLatticeG
From the normal Julia prompt, scripts, or notebooks, you can also inspect docstrings with:
@doc CubQMCLatticeG
@doc CubQMCBayesNetGOnce QuasiMC.jl is registered in the Julia General Registry:
using Pkg
Pkg.add("QuasiMC")Until then, install directly from GitHub:
using Pkg
Pkg.add(url="https://github.com/QMCSoftware/QuasiMC.jl")IIDStdUniform is fully Julia-native. Lattice, DigitalNetB2, and Halton use the packaged QMCToolsCL shared library that ships through QuasiMC's staged QMCToolsCL_jll dependency, so no Python setup is required for core package usage.
Advanced users can override that shared library path before first use:
ENV["QUASIMC_QMCTOOLSCL_LIB"] = "/absolute/path/to/library"See the contributing guidelines for the full developer setup, testing instructions, and how to add new components.
If you find QuasiMC.jl helpful in your work, please cite:
@misc{quasimcjl2026,
author = {Sou-Cheng T. Choi and Fred J. Hickernell and Aleksei G. Sorokin and contributors},
title = {{QuasiMC.jl}: Quasi-Monte Carlo Community Software in Julia},
year = {2026},
url = {https://github.com/QMCSoftware/QuasiMC.jl}
}We maintain a list of publications on the development and use of QuasiMC.jl and QMCPy.
Want to contribute to QuasiMC.jl? Please see our guidelines for contributors, which cover developer setup, running tests, building documentation, code style, and how to add new component types.
This software would not be possible without the efforts of the QMC community including our steering council, collaborators, contributors, and sponsors.
Some repository content was produced with the help of AI tools (Claude, GPT) and reviewed by the authors and contributors.
Apache 2.0 — see LICENSE for details.