public static <T> Iterator<T> getRandomIterator (Iterable<T> c)
    {
        return getRandomIterator(c.iterator());
    }
public static < T > Iterator < T > getRandomIterator ( Iterable < T > c ) { return getRandomIterator ( c . iterator ( ) ) ; }
Get an Iterator over the supplied Iterable that returns the elements in a completely random
order. Normally Iterators return elements in an undefined order, but it is usually the same
between different invocations as long as the underlying Iterable has not changed. This
method mixes things up.