public ProbChar[] determineCharaterProbability(Individual[] fitIndividuals) {

		//keep track of the most probable character in each index of the individuals
		ProbChar[] mostProbableChars = new ProbChar[TARGET_STRING.length()];

		//keep track of the fitness of each character that we might have in each index
		//changes for each array
		ProbChar[] allCharProbabilities = new ProbChar[ALPHABET.length()];
		//initialize the array
		for(int i = 0; i < ALPHABET.length(); i++) {
			allCharProbabilities[i] = new ProbChar(ALPHABET.charAt(i), INDIVIDUAL_POPULATION_SIZE);
		}

		//go through each index of the individuals
		for(int indIndex = 0; indIndex < TARGET_STRING.length(); indIndex++) {
			//reset all the ProbChars in allCharProbabilities
			for(ProbChar f : allCharProbabilities) {
				f.reset();
			}

			//adjust all the the FitChars in the array based on the current index of the fit individuals
			for(Individual curInd : fitIndividuals) {
				char curChar = curInd.getCharAt(indIndex);
				ProbChar curProbChar = ProbChar.getProbCharFromArrar(allCharProbabilities, curChar);
				curProbChar.addAppearance(curInd.getFitness());
			}

			//find the ProbChar with the highest probability of appearance
			ProbChar mostProbChar = new ProbChar('a', INDIVIDUAL_POPULATION_SIZE);
			for(ProbChar f : allCharProbabilities) {
				if(f.getProbability() > mostProbChar.getProbability())
					mostProbChar = new ProbChar(f);
			}

			//store the most probable ProbChar
			mostProbableChars[indIndex] = mostProbChar;
		}

		return mostProbableChars;
	}