public double getFruitProbs(int pos, int fruits, int score)
	{
		double prob = 0.0, innerprob, curprob;

		if(pos == length - 1)
		{
			if(fruits <= distribution[pos] && score == fruits)
				prob = 1.0;
		}

		else
		{
			for(int i = 0, s = 0; (i <= fruits) && (s <= score) && (i <= distribution[pos]); i++, s = s + (length - pos))
			{
				if(fruits - i <= (numfruits * choicesleft) - distsum[pos])
				{
					if(fruitproblist[pos + 1][fruits - i][score - s] < -0.1)
					{
						innerprob = getFruitProbs(pos + 1, fruits - i, score - s);
						fruitproblist[pos + 1][fruits - i][score - s] = innerprob;
					}
					else
						innerprob = fruitproblist[pos + 1][fruits - i][score - s];

					curprob = combinationlist[distribution[pos]][i] * combinationlist[(numfruits * choicesleft) - distsum[pos]][fruits - i] / combinationlist[(numfruits * choicesleft) - distsum[pos] + distribution[pos]][fruits];
					prob += curprob * innerprob;
				}
			}
		}
		return prob;
	}