public final <C extends Comparable<? super C>> int alter(
final Population<G, C> population, final int generation
) {
final Random random = RandomRegistry.getRandom();
final int order = Math.min(_order, population.size());
final IndexStream stream = IndexStream.Random(
population.size(), _probability
);
int alterations = 0;
for (int i = stream.next(); i != -1; i = stream.next()) {
final int[] individuals = subset(population.size(), order, random);
individuals[0] = i;
alterations += recombine(population, individuals, generation);
}