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]
          arr = numpy.zeros(size, dtype=dtype)
          for (p,_) in dtype:
              sigma = numpy.sqrt(self._var[p])
              mu = self._mean[p]
              a,b = self._bounds[p]
              arr[p][:] = scipy.stats.truncnorm.rvs((a-mu)/sigma, (b-mu)/sigma,
                  loc=self._mean[p], scale=sigma, size=size)
          return arr
docs: Gives a set of random values drawn from this distribution.
  
          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.