code: def create_latin_hypercube_samples(order, dim=1):
      
      randoms = numpy.random.random(order*dim).reshape((dim, order))
      for dim_ in range(dim):
          perm = numpy.random.permutation(order)  # pylint: disable=no-member
          randoms[dim_] = (perm + randoms[dim_])/order
      return randoms
docs: Latin Hypercube sampling.
  
      Args:
          order (int):
              The order of the latin hyper-cube. Defines the number of samples.
          dim (int):
              The number of dimensions in the latin hyper-cube.
  
      Returns (numpy.ndarray):
          Latin hyper-cube with ``shape == (dim, order)``.