Пример #1
0
        /// <summary>
        /// Estimates expected value of a probability distribution given prior and positive and total samples,
        /// using Bayes rule.
        /// </summary>
        /// <param name="prior">Prior probability distribution.</param>
        /// <param name="positiveSamples">Number of positive samples.</param>
        /// <param name="negSamples">Number of negative samples.</param>
        /// <returns>Estimated expected value.</returns>
        private void updateDistributionRandom(HistDistribution prior, int positiveSamples, int negSamples)
        {
            var pos = positiveSamples;
            var neg = negSamples;

            while (pos + neg > 0)
            {
                var ratio = pos / (double)(pos + neg);

                if ((pos > 0) && (_random.NextDouble() < ratio))
                {
                    prior.Update(true);
                    pos--;
                }
                else
                {
                    prior.Update(false);
                    neg--;
                }
            }

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