docs: def dist(self):
          """
          How should the values in range be sampled, uniformly or via some function.
          :return:
          """
          if self.func is None:
              return random.uniform(self.min, self.max)
          if self._dist is None:
              x = numpy.arange(self.min, self.max, (self.max-self.min)/1000.0)
              p = self.func(x).cumsum()
              p -= p.min()
              p /= p.max()
              self._dist = interpolate.interp1d(p, x)
          return self._dist(random.random())