code: def propose(self):
          
  
          arrayjump = np.dot(
              self.proposal_sd,
              np.random.normal(
                  size=self.proposal_sd.shape[
                      0]))
          if self.verbose > 2:
              print_('Jump :', arrayjump)
  
          # Update each stochastic individually.
          for stochastic in self.stochastics:
              jump = arrayjump[self._slices[stochastic]].squeeze()
              if np.iterable(stochastic.value):
                  jump = np.reshape(
                      arrayjump[
                          self._slices[
                              stochastic]],
                      np.shape(
                          stochastic.value))
              if self.isdiscrete[stochastic]:
                  jump = round_array(jump)
              stochastic.value = stochastic.value + jump
docs: This method proposes values for stochastics based on the empirical
          covariance of the values sampled so far.
  
          The proposal jumps are drawn from a multivariate normal distribution.