title: Python: Alternative to quasi random sequences
body: <p>Hey I have the following problem. I have a large parameter space. In my case I have like 10 dimensions. But to simplify lets assume I have 3 variables x1,x2 and x3. They are discrete numbers from 1 to 10. Now i create all possible parameter combinations and want to use them for postprocessing. In my real case that are too many combinatons. So I want to do a quasi random sequence search to reduce the search space. But the the combinations in the search space should cover it as good as possible. (uniform distributed). I want to prevent the parameter combination to Cluster in the search space, it should Cover the whole search space as good as possible. I need that to find preferences of the parameter combiantions in the processing of the parameters. There a many approaches to do that, like Haton, Hammersley or Sobol sequences. But they are not working for discrete numbers. One package which do quasi random sequences is chaospy. If i round the numbers of the sequences, variable numbers of each variable will occur more than once in the different variable combinations. That is not what I want. I want that every variable number only occurs Once and the variables are uniformly distributed in the search space.  Is there a possibility to create from the beginning a random multi dimensional set of variable combination, in which every variable just appears once? For example In a two dimensional grid 10x10 one possible combination would be the diagonal. Of course in 3 dimensions I would need 100 combinations to Cover all Parameter value,</p>
  
  <p><strong>Lets have an simplified example with three variables from 1-10 with Sobol Sequence:</strong></p>
  
  <pre><code>import numpy as np
  import chaospy as cp
  
  #Create a Joint distributuon of the three varaibles, which ranges going from 1 to 10
  distribution2 = cp.J(cp.Uniform(1, 10),cp.Uniform(1, 10),cp.Uniform(1, 10))
  
  #Create 10 numbers in the variable space
  samplesSobol = distribution2.sample(10, rule="S")
  
  #Transpose the array to get the variable combinations in subarrays
  sobolPointsTranspose = np.transpose(samplesSobol)
  </code></pre>
  
  <p>Example Output: </p>
  
  <pre><code>[[ 7.89886475  6.34649658  4.8336792 ]
   [ 5.64886475  4.09649658  2.5836792 ]
   [ 1.14886475  8.59649658  7.0836792 ]
   [ 1.21917725  5.01055908  2.5133667 ]
   [ 5.71917725  9.51055908  7.0133667 ]
   [ 7.96917725  2.76055908  9.2633667 ]
   [ 3.46917725  7.26055908  4.7633667 ]
   [ 4.59417725  1.63555908  5.8883667 ]
   [ 9.09417725  6.13555908  1.3883667 ]
   [ 6.84417725  3.88555908  3.6383667 ]]
  </code></pre>
  
  <p>Now here every variable number is unique but the Output is not discrete. I can round it and get:</p>
  
  <pre><code>[[  8.   6.   5.]
   [  6.   4.   3.]
   [  1.   9.   7.]
   [  1.   5.   3.]
   [  6.  10.   7.]
   [  8.   3.   9.]
   [  3.   7.   5.]
   [  5.   2.   6.]
   [  9.   6.   1.]
   [  7.   4.   4.]]
  </code></pre>
  
  <p>Now the problem is, that for example 1 occurs twice in the first dimension or 4 in the second or 7 in the third dimension.</p>