<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rvs(self, size=1, param=None):
 """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. """

        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