public static <T> void shuffle(
		final List<T> list,
		final RandomGenerator random
	) {
		for (int j = list.size() - 1; j > 0; --j) {
			swap(list, j, random.nextInt(j + 1));
		}
	}
Randomize the {@code list} using the given {@link Random} object. The used
shuffling algorithm is from D. Knuth TAOCP, Seminumerical Algorithms,
Third edition, page 142, Algorithm S (Selection sampling technique).

@param list the {@code array} to randomize.
@param random the {@link RandomGenerator} object to use for randomizing.
@param <T> the component type of the array to randomize.
@throws NullPointerException if the give list or the random object is
         {@code null}.
jenetics/src/test/java/io/jenetics/util/lists.java