public String getWeightedTract(int[] columnCodes, boolean isEmployment) {
		
		String tract = "";
		
		ArrayList<ArrayList<String>> columns = new ArrayList<ArrayList<String>>();
		int columnLength = 0;
		int total = 0;
		
		// Calculate combined column total
		for(int i = 0; i < columnCodes.length; i++) {
			ArrayList<String> curCol = isEmployment ? mEmploymentByTract.getColumnByCode(columnCodes[i]) : mAgeByTract.getColumnByCode(columnCodes[i]);
			total += Integer.valueOf(curCol.get(curCol.size()-1)); // Total is held at last last row
			columns.add(curCol); // Add current column to local list to speed up loops below
			if(i==0) columnLength = curCol.size();
		}
		
		// Generate random number within total range
		int randomVal = mRand.nextInt(total + 1);
		int runningTotal = 0;
		// When random value falls within running total, pick last tract
		for(int i = 1; i < columnLength; i++) {
			for(int j = 0; j < columns.size(); j++) {
				if(!columns.get(j).get(i).contains("*") && !columns.get(j).get(i).contains("-"))
					runningTotal += Integer.valueOf(columns.get(j).get(i));
			}
			if(randomVal < runningTotal) {
				tract = isEmployment ? mEmploymentByTract.getTractAtRow(i) : mAgeByTract.getTractAtRow(i);
				break;
			}
		}
		return tract;
	}