public MarkovState getResult(StochasticAction action) { double value = rand.NextDouble(); double current = 0.0; ActionResult result = null; int i = 0; List <ActionResult> results = action.getPossibleResults(); while (i < results.Count() && current < value) { result = results[i]; current += result.probability; i++; } return(result.state); }