public static void shuffleSubArray(int[] array, int subArrayLength, Random rand) {
		
		if (subArrayLength == 0) return;

		int subArrays = array.length / subArrayLength;

		for (int subArraysNum = 0; subArraysNum < subArrays; subArraysNum++) {

			int subArrayEndIndex = (subArraysNum+1)*subArrayLength;
			int subArrayStartIndex = subArrayEndIndex - subArrayLength;

			for (int i = subArrayEndIndex; i > subArrayStartIndex + 1; i--) {
				int b = rand.nextInt(subArrayEndIndex-subArrayStartIndex) + subArrayStartIndex;
				if (b != i-1) {
					int e = array[i-1];
					array[i-1] = array[b];
					array[b] = e;
				}
			}

		}

	}