Пример #1
0
        public void ClassSetUp() {
            _dblRandomizers.GetOrAdd("Beta(2, 4)", new BetaRandomizer(2, 4));
            _dblRandomizers.GetOrAdd("Uniform(0, 1)", new UniformRandomizer(0, 1));
            _dblRandomizers.GetOrAdd("Triangular(0, 1, 0.5)", new TriangularRandomizer(0, 1, 0.5));
            _dblRandomizers.GetOrAdd("Normal(0.5, 0.15)", new NormalRandomizer(0.5, 0.15));
            _dblRandomizers.GetOrAdd("LogNormal(0.5, 1.5)", new LogNormalRandomizer(0.5, 1.5));
            _dblRandomizers.GetOrAdd("Exponential(4)", new ExponentialRandomizer(4));
            _dblRandomizers.GetOrAdd("Exponential(2)", new ExponentialRandomizer(2));
            _dblRandomizers.GetOrAdd("Exponential(1)", new ExponentialRandomizer(1));
            _dblRandomizers.GetOrAdd("Exponential(0.5)", new ExponentialRandomizer(0.5));

            for(int i = 0; i <= 20; i += 5)
                _dblRandomizers.GetOrAdd("Weibull(" + i + ")", new WeibullRandomizer(i));

            // INT 형
            //

            _intRandomizers.GetOrAdd("Binominal(50, 0.5)", new BinominalRandomizer(50, 0.5));
            _intRandomizers.GetOrAdd("Binominal(50, 0.1)", new BinominalRandomizer(50, 0.1));
            _intRandomizers.GetOrAdd("Poisson", new PoissonRandomizer(5));
            _intRandomizers.GetOrAdd("Pareto(1)", new ParetoRandomizer(1));
            _intRandomizers.GetOrAdd("Pareto(0.5)", new ParetoRandomizer(0.5));

            _numbers = new double[RAND_NUMBER];
            _dblHistogram = new Histogram(50, 0, 2);
            _intHistogram = new Histogram(50, 0, 50);
        }
Пример #2
0
        public Categorical(Histogram histogram, Func<Random> randomFactory = null) {
            histogram.ShouldNotBeNull("histogram");
            var p = histogram.GetCounts();

            SetParameters(p);
            _random = (randomFactory != null) ? randomFactory() : MathTool.GetRandomFactory().Invoke();
        }
Пример #3
0
        // NOTE: _numbers 를 사용하게 되면, Parallel이 불가능하기 때문에, numbers를 인자로 받고, Thread-Safe 하게 사용할 수 있도록 했다.
        //
        protected static void DisplayDistribution(string name, Histogram histogram) {
            if(log.IsDebugEnabled) {
                log.Debug(@"-------------------------------------------");
                log.Debug(@"{0} Histogram:{1}{2}", name, Environment.NewLine, histogram.StemLeaf(50));

                log.Debug(@"-------------------------------------------");
                log.Debug(string.Empty);
            }
        }
Пример #4
0
        // NOTE: _numbers 를 사용하게 되면, Parallel이 불가능하기 때문에, numbers를 인자로 받고, Thread-Safe 하게 사용할 수 있도록 했다.
        //
        private static void DisplayDistribution(string name, Histogram histogram, double[] numbers) {
            log.Debug(@"-------------------------------------------");
            histogram.ResetData();
            histogram.AddData(numbers);
            log.Debug(@"{0} Histogram:\r\n{1}", name, histogram.StemLeaf(50));

            double avg, stdev;
            numbers.AverageAndStDev(out avg, out stdev);
            log.Debug(@"Avg = {0} ; StDev = {1}", avg, stdev);
            log.Debug(@"-------------------------------------------");
            log.Debug(string.Empty);
        }
Пример #5
0
        public void SamplesDistributionTest() {
            var source = Normal.Samples(MathTool.GetRandomFactory()(), 0.0, 1.0).AsParallel().Take(99999).ToList();
            var histogram = new Histogram(source, 50);

            DisplayDistribution("Normal", histogram);
        }
Пример #6
0
        public void SamplesDistributionTest() {
            var source =
                DiscreteUniform.Samples(MathTool.GetRandomFactory()(), 0, 10).AsParallel().Take(99999).Select(x => (double)x).ToList();
            var histogram = new Histogram(source, 11, 0, 11);

            DisplayDistribution("DiscreteUniform", histogram);
        }