コード例 #1
0
 public (double expectedValue, double variance, double standardDeviation, IEnumerable <double> distribution) Run(
     UniformNormalizedBasedGenerator generator,
     int totalValues,
     int totalIntervals)
 {
     return(Core(
                generator,
                totalValues,
                totalIntervals,
                _normalizedUniformDistributedSequence));
 }
コード例 #2
0
        private (double expectedValue, double variance, double standardDeviation, IEnumerable <double> distribution) Core(
            UniformNormalizedBasedGenerator generator,
            int totalValues,
            int totalIntervals,
            IEnumerable <double> uniformNormalizedSeq)
        {
            var newNotNormalizedSeq = generator.GenerateSequence(uniformNormalizedSeq);

            (double expVal, double variance, double standardDeviation) = StatisticsGenerator.GetStatistics(newNotNormalizedSeq);

            var    dist  = generator.Distribution;
            double begin = dist.MinValue;
            double end   = dist.MaxValue;

            var distribution = SequenceHelper.GetDistribution(newNotNormalizedSeq, begin, end, totalIntervals)
                               .Select(i => i / (double)totalValues).ToArray();

            return(expVal, variance, standardDeviation, distribution);
        }
コード例 #3
0
        private void CheckAssert(UniformNormalizedBasedGenerator generator, NotNormalizedDistribution dist,
                                 double distributionEpsilon, double statEpsilon,
                                 int totalValues, int totalIntervals)
        {
            //
            var uniformNotNormalizedSeq = new LehmerGenerator(_multiplier, _initialValue, _divider)
                                          .GenerateSequence(totalValues);
            var uniformNormalizedSeq = SequenceHelper.Normalize(uniformNotNormalizedSeq, _divider);
            //
            var newNotNormalizedSeq = generator.GenerateSequence(uniformNormalizedSeq);

            (double expVal, double variance, _) = StatisticsGenerator.GetStatistics(newNotNormalizedSeq);

            double begin = dist.MinValue;
            double end   = dist.MaxValue;

            var distribution = SequenceHelper.GetDistribution(newNotNormalizedSeq, begin, end, totalIntervals)
                               .Select(i => i / (double)totalValues).ToArray();

            var distResults = dist.EstimateDistribution(distribution, distributionEpsilon);
            var statResults = dist.EstimateStatistics(expVal, variance, statEpsilon);

            Assert.IsTrue(distResults && statResults);
        }