code: def from_uniform_draw(cls,pst,num_reals):
          
          #if not pe.istransformed:
          #    pe._transform()
          #ub = pe.ubnd
          #lb = pe.lbnd
          li = pst.parameter_data.partrans == "log"
          ub = pst.parameter_data.parubnd.copy()
          ub.loc[li] = ub.loc[li].apply(np.log10)
          ub = ub.to_dict()
          lb = pst.parameter_data.parlbnd.copy()
          lb.loc[li] = lb.loc[li].apply(np.log10)
          lb = lb.to_dict()
  
          # set up some column names
          #real_names = ["{0:d}".format(i)
          #              for i in range(num_reals)]
          real_names = np.arange(num_reals,dtype=np.int64)
          arr = np.empty((num_reals,len(ub)))
          adj_par_names = set(pst.adj_par_names)
          for i,pname in enumerate(pst.parameter_data.parnme):
              #print(pname,lb[pname],ub[pname])
              if pname in adj_par_names:
                  arr[:,i] = np.random.uniform(lb[pname],
                                                        ub[pname],
                                                        size=num_reals)
              else:
                  arr[:,i] = np.zeros((num_reals)) + \
                                      pst.parameter_data.\
                                           loc[pname,"parval1"]
          #print("back transforming")
  
          df = pd.DataFrame(arr,index=real_names,columns=pst.par_names)
          df.loc[:,li] = 10.0**df.loc[:,li]
  
          new_pe = cls.from_dataframe(pst=pst,df=pd.DataFrame(data=arr,columns=pst.par_names))
          #new_pe._applied_tied()
          return new_pe
docs: instantiate a parameter ensemble from uniform draws
  
          Parameters
          ----------
          pst : pyemu.Pst
              a control file instance
          num_reals : int
              number of realizations to generate
  
          Returns
          -------
          ParameterEnsemble : ParameterEnsemble