code: public static <T> void randomDraw(List<T> dataSet, int numSample,
  									  List<T> initialSample, Random rand) {
  		initialSample.clear();
  
  		for (int i = 0; i < numSample; i++) {
  			// index of last element that has not been selected
  			int indexLast = dataSet.size()-i-1;
  			// randomly select an item from the list which has not been selected
  			int indexSelected = rand.nextInt(indexLast+1);
  
  			T a = dataSet.get(indexSelected);
  			initialSample.add(a);
  
  			// Swap the selected item with the last unselected item in the list. This way the selected
  			// item can't be selected again and the last item can now be selected
  			dataSet.set(indexSelected,dataSet.set(indexLast,a));
  		}
  	}
docs: Performs a random draw in the dataSet.  When an element is selected it is moved to the end of the list
  so that it can't be selected again.
  
  @param dataSet List that points are to be selected from.  Modified.