public static <T>List<List<T>> shuffle(int samples,Collection<T> workingSet){
  List<List<T>> sets=newArrayListWithCapacity(samples);
  for (int i=0; i < samples; i++) {
    List<T> set=newArrayList(workingSet);
    Collections.shuffle(set);
    sets.add(set);
  }
  return sets;
}

public static < T > List < List < T > > shuffle ( int samples , Collection < T > workingSet ) { List < List < T > > sets = newArrayListWithCapacity ( samples ) ; for ( int i = 0 ; i < samples ; i ++ ) { List < T > set = newArrayList ( workingSet ) ; Collections . shuffle ( set ) ; sets . add ( set ) ; } return sets ; }
based on the passed in working set , creates n shuffled variants .
