private void estimateDistribution(int[] bowl, int bowlId, int round, int bowlSize){
	    // Initially, create a uniform distribution
	    for (int i=0; i < NUM_FRUITS ; i++) {
		    originalDistribution[i] = Math.round(n_fruits/NUM_FRUITS);

		    // Assign uniform probability
		    if (bowls_seen[0] == 0 || bowls_seen[1] == 0)
		    {
			    java.util.Arrays.fill(fruit_probs, 1.0 / NUM_FRUITS);
		    }
	    }

	    // Update fruit history as bowls come by
	    fruitHistory = history(bowl, bowlId, round);
	    bowls_seen[round]++;

	    if (bowls_seen[0] > 0 || bowls_seen[1] > 0)
	    {
		    // Update Probabilities
		    double prob_sum = 0.0;
		    for (int i = 0; i < NUM_FRUITS ; i++) {
			    fruit_probs[i] += (fruitHistory[round*n_players + bowlId][i]*1.0/bowlSize);
			    prob_sum += fruit_probs[i];
		    }
	    }

	    // generate a platter based on estimated probabilties of each fruit
	    for (int i=0; i < NUM_FRUITS ; i++) {
		    currentDistribution[i] = (int) Math.round(n_fruits * fruit_probs[i]);
	    }

	    for (int i=0; i < NUM_FRUITS ; i++) {
		    originalDistribution[i] -= currentDistribution[i];
	    }

    }