code: def draw(self,cov,num_reals=1,how="normal",enforce_bounds=None):
          
          how = how.lower().strip()
          if not self.istransformed:
                  self._transform()
          if how == "uniform":
              self._draw_uniform(num_reals=num_reals)
          else:
              super(ParameterEnsemble,self).draw(cov,num_reals=num_reals)
              # replace the realizations for fixed parameters with the original
              # parval1 in the control file
              self.pst.parameter_data.index = self.pst.parameter_data.parnme
              fixed_vals = self.pst.parameter_data.loc[self.fixed_indexer,"parval1"]
              for fname,fval in zip(fixed_vals.index,fixed_vals.values):
                  #if fname not in self.columns:
                  #    continue
                  self.loc[:,fname] = fval
          istransformed = self.pst.parameter_data.loc[:,"partrans"] == "log"
          self.loc[:,istransformed] = 10.0**self.loc[:,istransformed]
          self.__istransformed = False
  
          #self._applied_tied()
  
  
          self.enforce(enforce_bounds)
docs: draw realizations of parameter values
  
          Parameters
          ----------
          cov : pyemu.Cov
              covariance matrix that describes the support around
              the mean parameter values
          num_reals : int
              number of realizations to generate
          how : str
              distribution to use to generate realizations.  Options are
              'normal' or 'uniform'.  Default is 'normal'.  If 'uniform',
              cov argument is ignored
          enforce_bounds : str
              how to enforce parameter bound violations.  Options are
              'reset' (reset individual violating values), 'drop' (drop realizations
              that have one or more violating values.  Default is None (no bounds enforcement)