HALTON
The Halton Quasi Monte Carlo (QMC) Sequence


HALTON is a FORTRAN90 library which computes elements of a Halton Quasi Monte Carlo (QMC) sequence using a simple interface.

A more sophisticated library is available in HALTON_ADVANCED, but I find this simple version to be preferable for everyday use!

The standard M-dimensional Halton sequence is simply composed of M 1-dimensional van der Corput sequences, using as bases the first M primes.

The HALTON function will return the M-dimensional element of this sequence with index I.

The HALTON_SEQUENCE function will return the M-dimensional elements of this sequence with indices I1 through I2.

The HALTON_INVERSE function accepts an M-dimensional value, presumably computed by HALTON, and returns its original index I.

The HALTON_BASE function allows the user to replace the standard basis of primes with some other choice.

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

HALTON is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

CVT, a FORTRAN90 library which computes elements of a Centroidal Voronoi Tessellation.

FAURE, a FORTRAN90 library which computes elements of a Faure sequence.

HALTON_ADVANCED, a FORTRAN90 library which computes elements of a Halton Quasi Monte Carlo (QMC) sequence, using an advanced interface with many input options.

HALTON_DATASET, a FORTRAN90 library which creates a Halton sequence and write it to a file.

HAMMERSLEY, a FORTRAN90 library which computes elements of a Hammersley Quasi Monte Carlo (QMC) sequence, using a simple interface.

HEX_GRID, a FORTRAN90 library which computes elements of a hexagonal grid dataset.

IHS, a FORTRAN90 library which computes elements of an improved distributed Latin hypercube dataset.

LATIN_CENTER, a FORTRAN90 library which computes elements of a Latin Hypercube dataset, choosing center points.

LATIN_EDGE, a FORTRAN90 library which computes elements of a Latin Hypercube dataset, choosing edge points.

LATIN_RANDOM, a FORTRAN90 library which computes elements of a Latin Hypercube dataset, choosing points at random.

LATTICE_RULE, a FORTRAN90 library which approximates multidimensional integrals using lattice rules.

LCVT, a FORTRAN90 library which computes a latinized Centroidal Voronoi Tessellation.

NIEDERREITER2, a FORTRAN90 library which computes elements of a Niederreiter sequence using base 2.

SOBOL, a FORTRAN90 library which computes elements of a Sobol sequence.

TOMS647, a FORTRAN90 library which is a version of ACM TOMS algorithm 647, for evaluating Faure, Halton and Sobol sequences.

UNIFORM, a FORTRAN90 library which computes elements of a uniform pseudorandom sequence.

VAN_DER_CORPUT, a FORTRAN90 library which computes elements of a 1D van der Corput Quasi Monte Carlo (QMC) sequence using a simple interface.

Reference:

  1. John Halton,
    On the efficiency of certain quasi-random sequences of points in evaluating multi-dimensional integrals,
    Numerische Mathematik,
    Volume 2, 1960, pages 84-90.
  2. John Halton, GB Smith,
    Algorithm 247: Radical-Inverse Quasi-Random Point Sequence,
    Communications of the ACM,
    Volume 7, 1964, pages 701-702.
  3. Ladislav Kocis, William Whiten,
    Computational Investigations of Low-Discrepancy Sequences,
    ACM Transactions on Mathematical Software,
    Volume 23, Number 2, 1997, pages 266-294.

Source Code:

Examples and Tests:

List of Routines:

You can go up one level to the FORTRAN90 source codes.


Last revised on 11 August 2016.