docs: public static <E> Collection<E> sampleWithoutReplacement(Collection<E> c, int n, Random r) {
      if (n < 0)
        throw new IllegalArgumentException("n < 0: " + n);
      if (n > c.size())
        throw new IllegalArgumentException("n > size of collection: " + n + ", " + c.size());
      List<E> copy = new ArrayList<E>(c.size());
      copy.addAll(c);
      Collection<E> result = new ArrayList<E>(n);
      for (int k = 0; k < n; k++) {
        double d = r.nextDouble();
        int x = (int) (d * copy.size());
        result.add(copy.remove(x));
      }
      return result;
    }