code: public static double[] shuffle(final double[] array, final Random random) {
  		for (int j = array.length - 1; j > 0; --j) {
  			swap(array, j, random.nextInt(j + 1));
  		}
  		return array;
  	}
docs: Randomize the {@code array} 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 array the array to shuffle
  @param random the PRNG