code: def run(self, N=100):
          
          th = self.proposal.rvs(size=N)
          self.X = ThetaParticles(theta=th, lpost=None)
          self.X.lpost = self.model.logpost(th)
          lw = self.X.lpost - self.proposal.logpdf(th)
          self.wgts = rs.Weights(lw=lw)
          self.norm_cst = rs.log_mean_exp(lw)
docs: Parameter
          ---------
          N: int
              number of particles
  
          Returns
          -------
          wgts: Weights object
              The importance weights (with attributes lw, W, and ESS)
          X: ThetaParticles object
              The N particles (with attributes theta, logpost)
          norm_cst: float
              Estimate of the normalising constant of the target