public static Vector<Assignment> assignNextChance() {
		if(DEBUG) System.out.println("Making sure we have assigned all chance variables");
		//get the next chance variable to assign
		Variable nextChance = null;
		for(int i = 1; i < variables.size(); i++) {
			Variable v = variables.get(i);
			if(v.isChance() && v.getAssignment() == Variable.UNASSIGNED) {
				nextChance = v;
				break;
			}
		}

		//if we cannot find a chance variable to assign, so they have all been assign.
		//return the current assignment
		if(nextChance == null) {
			if(Clause.isFormulaSAT(clauses)) {		
				//make an Assignment, and return it with a probably 1, since we are SAT
				Vector<Assignment> SATAssignment = new Vector<Assignment>();
				SATAssignment.add(new Assignment(variables, 1.0));
				return SATAssignment;
			} else if(Clause.isFormulaUnSAT(clauses)) {
				//make an assignment with probability 0.0 (since we are UNSAT)
				//and return it.
				Vector<Assignment> UNSATAssignment = new Vector<Assignment>();
				UNSATAssignment.add(new Assignment(variables, 0.0));
				return UNSATAssignment;
			} else {
				//we are neither SAT or UNSAT, yet there are no more chance variables to assign - this shouldn't happen
				//FREAK OUT!!!!
				System.out.println("Tried to assign all the chance variables after finding out we were SAT/UNSAT, but now we are not SAT or UNSAT!!!!");
				printFormulaInfo();
				System.exit(5);
			}
		}

		//we have found a chance variable to assign
		//assign it to true and false, adjust the resulting probabilities based on the variable's 
		//chance that it is true or false
		//and return all the resulting assignments
		Vector<Assignment> trueAssignments = tryAssign(nextChance, Variable.TRUE);
		for(Assignment a : trueAssignments)
			a.adjustProbability(nextChance.getChanceTrue());
		Vector<Assignment> falseAssignmetns = tryAssign(nextChance, Variable.FALSE);
		for(Assignment a : falseAssignmetns)
			a.adjustProbability(nextChance.getChanceFalse());

		//return all of the assignments if it is true and false.
		Vector<Assignment> allAssignments = new Vector<Assignment>();
		allAssignments.addAll(trueAssignments);
		allAssignments.addAll(falseAssignmetns);
		return allAssignments;
	}