@Test(dataProvider = "alterProbabilityParameters", groups = {"statistics"})
	public void alterProbability(
		final Integer ngenes,
		final Integer nchromosomes,
		final Integer npopulation,
		final Double p
	) {
		final ISeq<Phenotype<EnumGene<Double>, Double>> population =
			newPermutationDoubleGenePopulation(ngenes, nchromosomes, npopulation);

		// The mutator to test.
		final UniformOderBasedCrossover<Double, Double> crossover = new UniformOderBasedCrossover<>(p);

		final long nallgenes = ngenes*nchromosomes*npopulation;
		final long N = 100;
		final double mean = crossover.order()*npopulation*p;

		final long min = 0;
		final long max = nallgenes;
		final var histogram = Histogram.Builder.of(new Interval(min, max), 10);
		final var variance = new LongMomentStatistics();

		for (int i = 0; i < N; ++i) {
			final long alterations = crossover
				.alter(population, 1)
				.alterations();
			histogram.add(alterations);
			variance.accept(alterations);
		}

		// Normal distribution as approximation for binomial distribution.
		// TODO: Implement test
		//assertDistribution(histogram, new NormalDistribution<>(domain, mean, variance.getVariance()));
	}
@author <a href="mailto:feichtenschlager10@gmail.com">Paul Feichtenschlager</a>
jenetics/src/test/java/io/jenetics/UniformOrderBasedCrossoverTest.java