Esempio n. 1
0
        /// <summary>
        /// Creates a uniform distribution over all digits from 0 to <paramref name="maxDigit"/> (inclusive),
        /// excluding <paramref name="digit"/>.
        /// </summary>
        /// <param name="digit">The digit to exclude.</param>
        /// <param name="maxDigit">The maximum digit.</param>
        /// <returns>The created distribution.</returns>
        private static DiscreteChar AllDigitsExcept(int digit, int maxDigit)
        {
            Debug.Assert(maxDigit >= 0 && maxDigit <= 9 && digit >= 0 && digit <= 9, "The parameters must represent digits.");
            Debug.Assert(digit <= maxDigit, "digit must be between 0 and maxDigit.");
            Debug.Assert(maxDigit > 0, "The distribution must cover at least one digit.");

            if (digit == 0)
            {
                return(DiscreteChar.InRange('1', (char)('0' + maxDigit)));
            }

            if (digit == maxDigit)
            {
                return(DiscreteChar.InRange('0', (char)('0' + maxDigit - 1)));
            }

            return(DiscreteChar.InRanges('0', (char)('0' + digit - 1), (char)('0' + digit + 1), (char)('0' + maxDigit)));
        }
Esempio n. 2
0
        public void Char()
        {
            var charDist1 = StringDistribution.Char('a');

            StringInferenceTestUtilities.TestProbability(charDist1, 1.0, "a");
            StringInferenceTestUtilities.TestProbability(charDist1, 0.0, "aa", string.Empty);

            var charDist2 = StringDistribution.Char(DiscreteChar.InRange('a', 'c'));

            StringInferenceTestUtilities.TestProbability(charDist2, 1.0 / 3.0, "a", "b", "c");
            StringInferenceTestUtilities.TestProbability(charDist2, 0.0, "ab", string.Empty);

            Vector charProbs3 = PiecewiseVector.Zero(char.MaxValue + 1);

            charProbs3['a'] = 0.1;
            charProbs3['b'] = 0.9;
            var charDist3 = StringDistribution.SingleElement(DiscreteChar.FromVector(charProbs3));

            StringInferenceTestUtilities.TestProbability(charDist3, 0.1, "a");
            StringInferenceTestUtilities.TestProbability(charDist3, 0.9, "b");
            StringInferenceTestUtilities.TestProbability(charDist3, 0.0, "c", "ab", string.Empty);
        }