code: public static <T> T pickRandom (Iterator<T> iter, int count, T skip)
      {
          if (count < 2) {
              throw new IllegalArgumentException(
                  "Must have at least two elements [count=" + count + "]");
          }
  
          int index = getInt(count-1);
          T value = null;
          do {
              value = iter.next();
              if (value == skip) {
                  value = iter.next();
              }
          } while (index-- > 0);
          return value;
      }
docs: Picks a random object from the supplied iterator (which must iterate over exactly
  <code>count</code> objects. The specified skip object will be skipped when selecting a
  random value. The skipped object must exist exactly once in the set of objects returned by
  the iterator.
  
  @return a randomly selected item.
  
  @exception NoSuchElementException thrown if the iterator provides fewer than
  <code>count</code> elements.