Пример #1
0
        private GaussianDistribution estimateGaussian(HistDistribution dist, int positiveSamples, int totalSamples)
        {
            var newDist = new HistDistribution(dist);

            // TODO: Privremeno
            if (totalSamples > 300)
            {
                positiveSamples = (300 * positiveSamples) / totalSamples;
                totalSamples    = 300;
            }

            var pos = positiveSamples;
            var neg = totalSamples - positiveSamples;

            while (pos + neg > 0)
            {
                if (pos + neg <= 100)
                {
                    updateDistributionRandom(newDist, pos, neg);
                    pos = 0;
                    neg = 0;
                }
                else
                {
                    var newPos = (int)(100 * (pos / (float)(pos + neg)));
                    var newNeg = (int)(100 * (neg / (float)(pos + neg)));

                    updateDistributionRandom(newDist, newPos, newNeg);
                    pos -= newPos;
                    neg -= newNeg;
                }
            }

            Debug.Assert(pos == 0 && neg == 0);
            return(newDist.FitGaussian());
        }