SOBOL_DATASET
Generate Sobol Datasets
SOBOL_DATASET
is a C++ program which
creates a Sobol dataset.
Usage:
sobol_dataset m n skip
where

m is the spatial dimension.

n is the number of points to generate;

skip is the initial number of points to skip over.
The value of skip is used to allow the sequence to
"warm up". One common strategy is to set skip to
the smallest power of 2 which is equal to or greater than n.
The data is written to the file sobol_m_n.txt.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
SOBOL_DATASET is available in
a C++ version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
FAURE_DATASET,
a C++ program which
creates a Faure quasirandom dataset;
GRID_DATASET,
a C++ program which
creates a grid sequence and writes it to a file.
LATIN_CENTER_DATASET,
a C++ program which
creates a Latin Center Hypercube dataset;
LATIN_EDGE_DATASET,
a C++ program which
creates a Latin Edge Hypercube dataset;
LATIN_RANDOM_DATASET,
a C++ program which
creates a Latin Random Hypercube dataset;
NIEDERREITER2_DATASET,
a C++ program which
creates a Niederreiter quasirandom dataset with base 2;
NORMAL_DATASET,
a C++ program which
generates a dataset of multivariate normal pseudorandom values and writes them to a file.
SOBOL,
a dataset directory which
contains sample Sobol datasets
created by SOBOL_DATASET.
SOBOL,
a C++ library which
computes elements of a Sobol quasirandom sequence.
UNIFORM_DATASET,
a C++ program which
generates a dataset of multivariate uniform pseudorandom values and writes them to a file.
VAN_DER_CORPUT_DATASET,
a C++ program which
creates a van der Corput quasirandom sequence and writes it to a file.
Reference:

IA Antonov, VM Saleev,
An Economic Method of Computing LP TauSequences,
USSR Computational Mathematics and Mathematical Physics,
Volume 19, 1980, pages 252  256.

Paul Bratley, Bennett Fox,
Algorithm 659:
Implementing Sobol's Quasirandom Sequence Generator,
ACM Transactions on Mathematical Software,
Volume 14, Number 1, pages 88100, 1988.

Paul Bratley, Bennett Fox, Linus Schrage,
A Guide to Simulation,
Springer Verlag, pages 201202, 1983.

Paul Bratley, Bennett Fox, Harald Niederreiter,
Implementation and Tests of Low Discrepancy Sequences,
ACM Transactions on Modeling and Computer Simulation,
Volume 2, Number 3, pages 195213, 1992.

Bennett Fox,
Algorithm 647:
Implementation and Relative Efficiency of Quasirandom
Sequence Generators,
ACM Transactions on Mathematical Software,
Volume 12, Number 4, pages 362376, 1986.

Harald Niederreiter,
Random Number Generation and quasiMonte Carlo Methods,
SIAM, 1992.

William Press, Brian Flannery, Saul Teukolsky, William Vetterling,
Numerical Recipes: The Art of Scientific Computing,
Cambridge University Press.

Ilya Sobol,
USSR Computational Mathematics and Mathematical Physics,
Volume 16, pages 236242, 1977.

Ilya Sobol, Levitan,
The Production of Points Uniformly Distributed in a Multidimensional
Cube (in Russian),
Preprint IPM Akad. Nauk SSSR,
Number 40, Moscow 1976.
Source Code:
Examples and Tests:

sobol_02_00100.txt,
the Sobol dataset of dimension 2, computing 100 points, after skipping 128 points.
List of Routines:

MAIN is the main program for SOBOL_DATASET.

I8_BIT_HI1 returns the position of the high 1 bit base 2 in an integer.

I8_BIT_LO0 returns the position of the low 0 bit base 2 in an integer.

I8_SOBOL generates a new quasirandom Sobol vector with each call.

I8_SOBOL_GENERATE generates a Sobol dataset.

R8MAT_WRITE writes an R8MAT file.

TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the C++ source codes.
Last revised on 30 August 2005.