Force a Dataset to be a Latin Hypercube

LATINIZE is a C++ library which adjusts an M dimensional dataset of N points so that it forms a Latin hypercube.

On output, each row of the table will have the properties that:

  1. the minimum and maximum row values are the same as on input;
  2. the row contains N evenly spaced values between the minimum and maximum.
  3. in each row, the elements retain their ordering.


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


LATINIZE is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

BOX_BEHNKEN, a C++ library which computes a Box-Behnken design, that is, a set of arguments to sample the behavior of a function of multiple parameters;

LATIN_CENTER, a C++ library which computes Latin Square datasets by choosing the center of each square.

LATIN_EDGE, a C++ library which computes Latin Square datasets by choosing the edge of each square.

LATIN_RANDOM, a C++ library which computes Latin Square datasets by choosing a random point of each square.

TABLE, a data format which is used to store the input and output files used by the program.

TABLE_LATINIZE, a C++ program which allows the name of the data file to be specified on the command line.


  1. M D McKay, W J Conover, R J Beckman,
    A Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output From a Computer Code,
    Volume 21, pages 239-245, 1979.
  2. Yuki Saka, Max Gunzburger, John Burkardt,
    Latinized, Improved LHS, and CVT Point Sets in Hypercubes,
    International Journal of Numerical Analysis and Modeling,
    Volume 4, Number 3-4, 2007, pages 729-743,

Source Code:


CVT_02_00010 is a set of 10 CVT points in 2D:

CVT_03_00007 is a set of 7 CVT points in 3D:

CVT_03_00056 is a set of 56 CVT points in 3D:

CVT_07_00100 is a set of 100 CVT points in 7D:

List of Routines:

You can go up one level to the C++ source codes.

Last revised on 23 January 2012.