IHS_DATASET is a FORTRAN90 program which creates an IHS 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 FORTRAN90 program which creates a Faure quasirandom dataset;
GRID_DATASET, a FORTRAN90 program which creates a grid sequence and writes it to a file.
IHS, a FORTRAN90 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 FORTRAN90 program which creates a Latin Center Hypercube dataset;
LATIN_EDGE_DATASET, a FORTRAN90 program which creates a Latin Edge Hypercube dataset;
LATIN_RANDOM_DATASET, a FORTRAN90 program which creates a Latin Random Hypercube dataset;
NIEDERREITER2_DATASET, a FORTRAN90 program which creates a Niederreiter quasirandom dataset with base 2;
NORMAL_DATASET, a FORTRAN90 program which generates a dataset of multivariate normal pseudorandom values and writes them to a file.
SOBOL_DATASET, a FORTRAN90 program which computes a Sobol quasirandom sequence and writes it to a file.
UNIFORM_DATASET, a FORTRAN90 program which generates a dataset of multivariate uniform pseudorandom values and writes them to a file.
VAN_DER_CORPUT_DATASET, a FORTRAN90 program which creates a van der Corput quasirandom sequence and writes it to a file.
You can go up one level to the FORTRAN90 source codes.