Identify indices of input sample associated with each trajectory

        For each trajectory, identifies the indexes of the input sample which
        is a function of the number of factors/groups and the number of samples

        Arguments
        ---------
        num_samples : int
            The number of trajectories
        num_params : int
            The number of parameters
        num_groups : int
            The number of groups

        Returns
        -------
        list of numpy.ndarray

        Example
        -------
        >>> BruteForce()._make_index_list(num_samples=4, num_params=3,
            num_groups=2)
        [np.array([0, 1, 2]), np.array([3, 4, 5]), np.array([6, 7, 8]),
         np.array([9, 10, 11])]

def _make_index_list(num_samples, num_params, num_groups=None):
        """Identify indices of input sample associated with each trajectory

        For each trajectory, identifies the indexes of the input sample which
        is a function of the number of factors/groups and the number of samples

        Arguments
        ---------
        num_samples : int
            The number of trajectories
        num_params : int
            The number of parameters
        num_groups : int
            The number of groups

        Returns
        -------
        list of numpy.ndarray

        Example
        -------
        >>> BruteForce()._make_index_list(num_samples=4, num_params=3,
            num_groups=2)
        [np.array([0, 1, 2]), np.array([3, 4, 5]), np.array([6, 7, 8]),
         np.array([9, 10, 11])]
        """
        if num_groups is None:
            num_groups = num_params

        index_list = []
        for j in range(num_samples):
            index_list.append(np.arange(num_groups + 1) + j * (num_groups + 1))
        return index_list