private void reCalibrateBeliefState(Rank rank,
            List<ProbabilityDistribution> distributions,
            ProbabilityDistribution changed) {

        double scale;
        if (Math.abs(changed.getProb(rank) - 1) < EPSILON) {
            scale = getScaleUp(rank, distributions);
        } else {
            scale = getScaleDown(rank, distributions);
        }
        for (ProbabilityDistribution dist : distributions) {
            if (dist == changed || Math.abs(dist.getProb(rank) - 1) < EPSILON) {
                continue;
            }

            dist.setProb(rank, scale * dist.getProb(rank));
            try {
                normalize(dist, rank);
            } catch (Exception ex) {
                Logger.getLogger(UTCPlayer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }