private List<Individual> succession(List<Individual> newGeneration, List<Individual> oldGeneration) {
        List<Individual> result = new ArrayList<>();
        int oldSize = oldGeneration.size();
        int newSize = newGeneration.size();
        int oldSizeGroupWhichGoToNextIteration = oldSize / 4;
        int newSizeGroupWhichGoToNextIteration = (newSize / 4) * 3;
        for (int i = 0; i < oldSizeGroupWhichGoToNextIteration; i++) {
            double gaussian = random.nextGaussian();
            double tmp = Math.abs(gaussian) * (double) oldSize;
            int index = (int) Math.round(tmp);
            if (index >= oldSize) {
                index = 0;

            }
            result.add(oldGeneration.get(index));
            oldGeneration.remove(index);
            oldSize--;
        }
        for (int i = 0; i < newSizeGroupWhichGoToNextIteration; i++) {
            double gaussian = random.nextGaussian();
            double tmp = Math.abs(gaussian) * (double) newSize;
            int index = (int) Math.round(tmp);
            if (index >= newSize) {
                index = 0;
            }
            result.add(newGeneration.get(index));
            newGeneration.remove(index);
            newSize--;
        }
        return result;
    }