code: def target_distribution(self, samples):
          
          curr_likelihood = self.likelihood(samples)
          curr_prior = self.prior(samples)
          ret = np.ones(NUM_OF_INSTANCE)
          for i in range(NUM_OF_INSTANCE):
              ret[i] = curr_likelihood[i] * curr_prior[i]
          return ret
docs: posterior probability
          
          Parameters
          ----------
          samples: list
              a collection of sample, it's a (NUM_OF_INSTANCE * NUM_OF_FUNCTIONS) matrix,
              representing{{w11, w12, ..., w1k}, {w21, w22, ... w2k}, ...{wk1, wk2,..., wkk}}
          
          Returns
          -------
          float
              posterior probability