IHS_DATASET is a C++ program which creates an IHS (Improved Hypercube Sampling) dataset.
A Latin hypercube, in M dimensional space, with N points, can be thought of as being constructed by dividing each of the M coordinate dimensions into N equal intervals. The J-th coordinate of the I-th point can be constructed by choosing, in the J-th dimension, an interval that has not been used, and then choosing any value in that interval.
This algorithm differs in that it tries to pick a solution which has the property that the points are "spread out" as evenly as possible. It does this by determining an optimal even spacing, and using the duplication factor D to allow it to choose the best of the various options available to it (the more duplication, the better chance of optimization).
One drawback to this algorithm is that it requires an internal real distance array of dimension D * N * N. For a relatively moderate problem with N = 1000, this can exceed the easily accessible memory. Moreover, the program is inherently quadratic in N in execution time as well as memory; the computation of the I-th point in the set of N requires a consideration of the value of the coordinates used up by the previous points, and the distances from each of those points to the candidates for the next point.
The program is interactive, and allows the user to choose
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
IHS_DATASET is available in a C++ version and a FORTRAN90 version and a MATLAB version.
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.
IHS, a C++ library which supplies the computational routines needed by IHS_DATASET.
IHS, a dataset directory which contains sample datasets created by IHS_DATASET.
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_DATASET, a C++ program which computes a Sobol quasirandom sequence and writes it to a file.
UNIFORM_DATASET, a C++ program which generates a dataset of 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.
You can go up one level to the C++ source codes.