code: def rvs(self, size=1, param=None):
          
          if param is not None:
              dtype = [(param, float)]
          else:
              dtype = [(p, float) for p in self.params]
          size = int(size)
          arr = numpy.zeros(size, dtype=dtype)
          draws = self._kde.resample(size)
          draws = {param: draws[ii,:] for ii,param in enumerate(self.params)}
          for (param,_) in dtype:
              try:
                  # transform back to param space
                  tparam = self._tparams[param]
                  tdraws = {tparam: draws[param]}
                  draws[param] = self._transforms[tparam].inverse_transform(
                      tdraws)[param]
              except KeyError:
                  pass
              arr[param] = draws[param]
          return arr
docs: Gives a set of random values drawn from the kde.
  
          Parameters
          ----------
          size : {1, int}
              The number of values to generate; default is 1.
          param : {None, string}
              If provided, will just return values for the given parameter.
              Otherwise, returns random values for each parameter.
  
          Returns
          -------
          structured array
              The random values in a numpy structured array. If a param was
              specified, the array will only have an element corresponding to the
              given parameter. Otherwise, the array will have an element for each
              parameter in self's params.