public void EmptyProbabilityDistribution_ChooseOne_ShouldDefault()
        {
            var distribution = new StochasticProvider <string>(new PredeterminedRandom(20));

            var result = distribution.GetOne();

            result.Should().BeNullOrEmpty();
        }
        public void NonEmptyProbabilityDistribution_ChooseOne_ShouldReturnOne()
        {
            var random       = new PredeterminedRandom(80, 30);
            var distribution = new StochasticProvider <string>(random)
                               .Add("First", 50)
                               .Add("Second", 40);

            distribution.GetOne().Should().Be("Second");
            distribution.GetOne().Should().Be("First");
        }
        private int GetSectionToEliminate(SortedSubsetChromosome chromosome)
        {
            var provider = new StochasticProvider <int>(this.Random);

            for (int s = 0; s < chromosome.Sections.Length; s++)
            {
                var section     = chromosome.Sections[s];
                var probability = chromosome.TotalCount / (double)section.Length;
                provider.Add(s, probability);
            }

            int chosen = provider.GetOne();

            return(chosen);
        }