public double[][] getProbabilities(boolean actual, int mem_limit){
		//If probabilities have changed, we need to recompute all values
		int turn = game.deck.getTurns();
		if (prob_cache_turn != turn || actual != prob_cache_actual || mem_limit != prob_cache_memlimit)
			Arrays.fill(prob_cache_dirty, true);
		
		prob_cache_actual = actual;
		prob_cache_memlimit = mem_limit;
		
		for (int i=0; i<cards.length; i++){
			if (prob_cache_dirty[i]){
				prob_cache_dirty[i] = false;
				if (actual){
					prob_cache[i][0] = game.deck.getRealProbability(cards[i], true);
					prob_cache[i][1] = game.deck.getRealProbability(cards[i], false);
				}
				else{
					prob_cache[i][0] = game.deck.getProbability(cards[i], true, this, mem_limit);
					prob_cache[i][1] = game.deck.getProbability(cards[i], false, this, mem_limit);
				}
			}
		}
		
		return prob_cache;
	}