Additional low-discrepancy sequences for (hyper)cubic integration
@Zohaibcode740 is already working on this.
Since Aug 14, 2026.
- Dominant language
- Python
- Stars
- 101
- Forks
- 40
- PR merge metrics
- No merged PRs in 30d
Description
Following #241 (lattice rules) -- since that's already moving forward in #293 --
I wanted to propose a few complementary low-discrepancy constructions that
aren't covered by lattice rules alone:
- Sobol' sequences -- digital net construction, widely used, extensible in
n(unlike lattice rules, which neednfixed in advance for a given
generating vector). - Halton sequences -- radical-inverse construction, also extensible,
simpler to construct than Sobol' but with somewhat worse discrepancy in
higher dimensions. - (Randomized) Latin Hypercube Sampling -- not itself a low-discrepancy
sequence in the classical sense, but a well-established variance-reduction
alternative to plain Monte Carlo (Stein, 1987; McKay, Beckman & Conover,
1979), often used alongside QMC methods for the same integration problems. - Korobov lattice rules -- as far as I can tell, #293 implements the
general CBC-constructed lattice rules (via the Kuo/UNSW tabulated vectors).
Korobov lattices are a restricted special case (generating vector
z(a) = (1, a, a^2, ..., a^{d-1}) mod n, a single integer parametera),
which trades a smaller search space for near-instant table lookup and much
smaller storage -- a lighter-weight complement to the general CBC lattice
rather than a duplicate of it.
I've implemented all four of these from scratch already: Halton, Korobov
lattice rules, and randomized LHS for QMCPy
(merged), and Halton and rank-1 lattice sequences for
torchquad (open PR).
To keep review manageable, I'd plan to open a separate PR per sequence
rather than one large PR.
Would this be of interest? Happy to start whenever convenient, and to adjust
scope/order based on what's most useful for the library.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.