code: public static List<Integer> distinctRandomIntsInRange(final Random rng, final int minInclusive,
        final int maxExclusive, final int numInts) {
      checkArgument(numInts <= (minInclusive - maxExclusive));
      final List<Integer> chosenInts = Lists.newArrayList();
  
      while (chosenInts.size() < numInts) {
        final int i = rng.nextInt(maxExclusive - minInclusive);
        if (!chosenInts.contains(minInclusive + i)) {
          chosenInts.add(minInclusive + i);
        }
      }
      Collections.sort(chosenInts);
      return chosenInts;
    }
docs: Selects {@code numInts} from the range from {@code minInclusive} to {@code maxExclusive}.
  WARNING: the current implementation of this could be very slow if {@code numInts} is
  close to the size of the range.  The selected ints will be returned in order from least
  to greatest.