public Polygon mutate(final float rate, final float magnitude) {
		final var random = RandomRegistry.random();
		final Polygon mutated = new Polygon(length());

		for (int i = 0; i < _data.length; ++i) {
			if (random.nextFloat() < rate) {
				mutated._data[i] =
					clamp(_data[i] + (random.nextFloat()*2F - 1F)*magnitude);
			} else {
				mutated._data[i] = _data[i];
			}
		}

		return mutated;
	}
Return a new Polygon, mutated with the given rate and amount.
<p>
Each component of the Polygon may be mutated according to the specified
mutation rate. In case a component is going to be mutated, its value will
be randomly modified in the uniform range of
{@code [-magnitude, +magnitude]}.

@param rate the mutation rate
@param magnitude the mutation amount
@return a new Polygon
jenetics.example/src/main/java/io/jenetics/example/image/Polygon.java