private static byte[] compressibleData(Random random, double compressionRatio, int length) { int raw = (int) (length * compressionRatio); if (raw < 1) { raw = 1; } byte[] rawData = generateRandomData(random, raw); // Duplicate the random data until we have filled "length" bytes byte[] dest = new byte[length]; for (int i = 0; i < length; ) { int chunkLength = Math.min(rawData.length, length - i); System.arraycopy(rawData, 0, dest, i, chunkLength); i += chunkLength; } return dest; }