LATIN_RANDOM 
 Latin Random Squares in M dimensions
    
    
    
      LATIN_RANDOM
      is a Python library which
      makes Latin random squares.
    
    
      A Latin square is a selection of one point from each row and
      column of a square matrix or table.  In M dimensions, the
      corresponding item is a set of N points, where, in each dimension,
      there is exactly one point whose coordinates are in a given
      "column" or range of values.  To emphasize the
      use of higher dimensions, these objects are sometimes called
      Latin hypersquares.
    
    
      A Latin Random Square (I just made up this name) is a set of
      N points, where one point is taken at random from each of the
      subsquares of a Latin Square.  These points may be regarded as
      an M dimensional quasirandom pointset.
    
    
      Licensing:
    
    
      The computer code and data files described and made available on this web page
      are distributed under
      the GNU LGPL license.
    
    
      Languages:
    
    
      LATIN_RANDOM is available in
      a C version and
      a C++ version and
      a FORTRAN90 version and
      a MATLAB version and
      a Python version.
    
    
      Related Data and Programs:
    
    
      
      HALTON,
      a Python library which
      computes elements of a Halton Quasi Monte Carlo (QMC) sequence,
      using a simple interface.
    
    
      
      HAMMERSLEY,
      a Python library which
      computes elements of a Hammersley Quasi Monte Carlo (QMC) sequence,
      using a simple interface.
    
    
      
      UNIFORM,
      a Python library which
      computes elements of a uniform pseudorandom sequence.
    
    
      
      VAN_DER_CORPUT,
      a Python library which
      computes elements of a 1D van der Corput Quasi Monte Carlo (QMC) sequence
      using a simple interface.
    
    
      Reference:
    
    
      
        - 
          Paul Bratley, Bennett Fox, Linus Schrage,
          A Guide to Simulation,
          Springer Verlag, pages 201-202, 1983.
         
        - 
          C J Colbourn and J H Dinitz,
          CRC Handbook of Combinatorial Design,
          CRC, 1996.
         
        - 
          Bennett Fox,
          Algorithm 647:
          Implementation and Relative Efficiency of Quasirandom
          Sequence Generators,
          ACM Transactions on Mathematical Software,
          Volume 12, Number 4, pages 362-376, 1986.
         
        - 
          Michael McKay, William Conover, Richard Beckman,
          A Comparison of Three Methods for Selecting Values of Input
          Variables in the Analysis of Output From a Computer Code,
          Technometrics,
          Volume 21, pages 239-245, 1979.
         
        - 
          Albert Nijenhuis, Herbert Wilf,
          Combinatorial Algorithms,
          Academic Press, 1978, second edition,
          ISBN 0-12-519260-6.
         
        - 
          Herbert Ryser,
          Combinatorial Mathematics,
          Mathematical Association of America, 1963.
         
      
    
    
      Source Code:
    
    
      
        - 
          i4_uniform_ab.py,
          returns a scaled uniform I4 between A and B.
        
 
        - 
          latin_random.py, the source code.
        
 
        - 
          perm_uniform.py,
          randomly selects a permutation of the integers 0 through N-1.
        
 
        - 
          r8mat_transpose_print.py,
          prints an R8MAT, transposed.
        
 
        - 
          r8mat_transpose_print_some.py,
          prints some of an R8MAT, transposed.
        
 
        - 
          r8mat_uniform_01.py,
          returns a unit pseudorandom R8MAT.
        
 
        - 
          r8mat_write.py, 
          writes an R8MAT to a file.
        
 
        - 
          timestamp.py,
          prints the current YMDHMS date as a timestamp;
        
 
      
    
    
      Examples and Tests:
    
    
      
    
    
      List of Routines:
    
    
      
        - 
          GET_SEED returns a seed for the random number generator.
        
 
        - 
          GET_UNIT returns a free FORTRAN unit number.
        
 
        - 
          I4_UNIFORM returns a scaled pseudorandom I4.
        
 
      
    
    
      You can go up one level to 
      the Python source codes.
    
    
    
      Last revised on 13 November 2014.