package dk.itu.oop.lecture4; import java.util.*; public class DrawRandom { private Object[] elements; private int N; private int left; private Random rnd = new Random(); /* pre: c is not null * post: all elements from c can be drawn */ public DrawRandom(Collection c){ N = left = c.size(); elements = new Object[N]; Iterator itr = c.iterator(); for( int i = 0; i< N; i++ ) elements[i] = itr.next(); } /* pre: true * post: are there more elements to draw */ public boolean hasMore(){ return left > 0; } /* pre: hasMore * post: return value belongs to initial collection, * return vaule will not again be drawn */ public Object drawOne(){ int index = rnd.nextInt( N ); System.out.println("["+index+":"+left+"]"); while ( elements[index] == null ) index = (index + 1)%N; Object ret = elements[index]; elements[index] = null; left--; return ret; } }