public TreeMap<Float,List<List<Integer>>> packFirstFitShuffled(){
  RandomDataGenerator rnd=new RandomDataGenerator();
  int[] permutation=rnd.nextPermutation(_items.size(),_items.size());
  List<Integer> shuffledItems=new ArrayList<Integer>(_items.size());
  List<Float> shuffledWeights=new ArrayList<Float>(_items.size());
  for (  int ix : permutation) {
    shuffledItems.add(_items.get(ix));
    shuffledWeights.add(_itemWeights.get(ix));
  }
  return packFirstFit(shuffledItems,shuffledWeights);
}

public TreeMap < Float , List < List < Integer > > > packFirstFitShuffled ( ) { RandomDataGenerator rnd = new RandomDataGenerator ( ) ; int [ ] permutation = rnd . nextPermutation ( _items . size ( ) , _items . size ( ) ) ; List < Integer > shuffledItems = new ArrayList < Integer > ( _items . size ( ) ) ; List < Float > shuffledWeights = new ArrayList < Float > ( _items . size ( ) ) ; for ( int ix : permutation ) { shuffledItems . add ( _items . get ( ix ) ) ; shuffledWeights . add ( _itemWeights . get ( ix ) ) ; } return packFirstFit ( shuffledItems , shuffledWeights ) ; }
shuffling the items to make some potential for having bins of different sizes when consecutive columns are of close cardinalities
