code: def simulate_experiment(self, modelparams, expparams, repeat=1):
          
          self._sim_count += modelparams.shape[0] * expparams.shape[0] * repeat
          assert(self.are_expparam_dtypes_consistent(expparams))
docs: Produces data according to the given model parameters and experimental
          parameters, structured as a NumPy array.
  
          :param np.ndarray modelparams: A shape ``(n_models, n_modelparams)``
              array of model parameter vectors describing the hypotheses under
              which data should be simulated.
          :param np.ndarray expparams: A shape ``(n_experiments, )`` array of
              experimental control settings, with ``dtype`` given by 
              :attr:`~qinfer.Model.expparams_dtype`, describing the
              experiments whose outcomes should be simulated.
          :param int repeat: How many times the specified experiment should
              be repeated.
          :rtype: np.ndarray
          :return: A three-index tensor ``data[i, j, k]``, where ``i`` is the repetition,
              ``j`` indexes which vector of model parameters was used, and where
              ``k`` indexes which experimental parameters where used. If ``repeat == 1``,
              ``len(modelparams) == 1`` and ``len(expparams) == 1``, then a scalar
              datum is returned instead.