@Override
	protected int crossover(final MSeq<G> that, final MSeq<G> other) {
		assert that.length() == other.length();

		int alteredGenes = 0;
		final var random = RandomRegistry.random();
		for (int i = 0; i < that.length(); ++i) {
			if (random.nextFloat() < probability()) {
				crossover(that, other, i);
				++alteredGenes;
			}
		}

		return alteredGenes;
	}
Constructs an alterer with a given recombination probability.

@param probability the crossover probability.
@throws IllegalArgumentException if the {@code probability} is not in the
        valid range of {@code [0, 1]}.
jenetics.example/src/main/java/io/jenetics/example/image/UniformCrossover.java