1 """Latin hypercube sampling."""
8 l = latin_hypercube(2, bound, m)
9 import matplotlib.pyplot as pyplot
12 pyplot.plot([v[0] for v in l], [v[1] for v in l], 'o')
14 pyplot.plot([random.random() * 2 * bound - bound for _ in xrange(m)],
15 [random.random() * 2 * bound - bound for _ in xrange(m)], 'o')
20 def latin_hypercube(dim, bound, m):
21 """Get a sample of *dim* dimentions, each in range (-*bound*, +*bound*)."""
22 dv = (2 * bound) / float(m)
23 dim_p = [range(m) for _ in xrange(dim)]
26 points = [list(l) for l in zip(*dim_p)]
27 points = [[(float(l) + random.random()) * dv - bound for l in p] for p in points]