Random Points on a Uniform Grid

**GRID**,
a MATLAB library which
randomly selects N distinct
points on a uniform grid in the unit hypercube in M-dimensional space.

Note that, unless N is an Mth power of an integer, the program must generate a regular grid with too many points, and then omit some. Choosing which points to omit is done with a random number generator, whose actions are controlled by SEED.

The actual placement of the grid within the unit hypercube leaves some options for the use. It is easiest to describe the options in the 1 dimensional case, and in terms of where the first and last grid point are. Assuming we have N evenly spaced points to place between 0 and 1, the centering options are

- CENTER = 1: first point is 0.0, last point is 1.0;
- CENTER = 2: first point is 1/(N+1), last point is N/(N+1);
- CENTER = 3: first point is 0, last point is (N-1)/N;
- CENTER = 4: first point is 1/N, last point is 1;
- CENTER = 5: first point is 1/(2*N), last point is (2*N-1)/(2*N);

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

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

BALL_GRID, a MATLAB library which computes grid points that lie inside a ball.

DISK_GRID, a MATLAB library which computes grid points that lie inside a disk of user specified radius and center in 2D, using GNUPLOT to create an image of the grid.

ELLIPSE_GRID, a MATLAB library which computes grid points that lie inside an ellipse.

ELLIPSOID_GRID, a MATLAB library which computes grid points that lie inside a 3D ellipsoid.

GRID_DATASET, a MATLAB program which allows the user to specify a grid dataset.

HALTON, a MATLAB library which computes elements of a Halton quasirandom sequence.

HAMMERSLEY, a MATLAB library which computes elements of a Hammersley quasirandom sequence.

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

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

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

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

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

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

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

NIEDERREITER2, a MATLAB library which computes elements of a Niederreiter quasirandom sequence with base 2.

PYRAMID_GRID, a MATLAB library which computes a grid of points over the interior of the unit pyramid in 3D;

SIMPLEX_GRID, a MATLAB library which generates a regular grid of points over the interior of an arbitrary simplex in M dimensions.

SOBOL, a MATLAB library which computes elements of a Sobol quasirandom sequence.

TETRAHEDRON_GRID, a MATLAB library which computes a tetrahedral grid of points.

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

VAN_DER_CORPUT, a MATLAB library which computes elements of a van der Corput quasirandom sequence.

- grid_generate.m, generates a grid dataset.
- grid_side.m, finds the smallest M-dimensional grid containing at least N points.
- ksub_random2.m, selects a random subset of size K from a set of size N.
- r8_uniform_01.m, returns a double precision pseudorandom number.
- r8mat_write.m, writes an R8MAT file.
- timestamp.m, prints the current YMDHMS date as a timestamp.
- tuple_next_fast.m, computes the next element of a tuple space, "fast".