code: public void shuffleColumnsAndThenRows(ArrayList<String> columns, ArrayList<String> rows) throws Exception {
  		doubleValues.clear();
  
  		for (String column : columns) { //shuffle all values in the column
  			ArrayList<Integer> rowIndex = new ArrayList<Integer>();
  			for (int i = 0; i < rows.size(); i++) {
  				rowIndex.add(i);
  			}
  			Collections.shuffle(rowIndex);
  			for (int i = 0; i < rows.size(); i++) {
  				String row = rows.get(i);
  				int randomIndex = rowIndex.get(i);
  				String destinationRow = rows.get(randomIndex);
  
  
  				String temp = this.getCell(destinationRow, column);
  				String value = this.getCell(row, column);
  				this.addCell(destinationRow, column, value);
  				this.addCell(row, column, temp);
  			}
  		}
  
  		for (String row : rows) {
  			ArrayList<Integer> columnIndex = new ArrayList<Integer>();
  			for (int i = 0; i < columns.size(); i++) {
  				columnIndex.add(i);
  			}
  			Collections.shuffle(columnIndex);
  			for (int i = 0; i < columns.size(); i++) {
  				String column = columns.get(i);
  
  				int randomIndex = columnIndex.get(i);
  				String destinationCol = columns.get(randomIndex);
  
  
  				String temp = this.getCell(row, destinationCol);
  				String value = this.getCell(row, column);
  				this.addCell(row, destinationCol, value);
  				this.addCell(row, column, temp);
  			}
  		}
  
  
  	}
docs: Randomly shuffle the columns and rows. Should be constrained to the same
  data type if not probably doesn't make any sense.
  
  @param columns
  @param rows
  @throws Exception