Пример #1
0
        public void QuantileDeserializationTest()
        {
            var seed             = Rand.Int();
            var initialEstimator = new QuantileEstimator(Rand.Double());

            initialEstimator.SetRandomSeed(Rand.Int());
            var serialized   = JsonConvert.SerializeObject(initialEstimator);
            var deserialized = JsonConvert.DeserializeObject <QuantileEstimator>(serialized);

            double[] GetRandomQuantiles(QuantileEstimator estimator)
            {
                var rand = new Random(seed);


                var numbers =
                    Enumerable.Range(0, rand.Next(100))
                    .Select(x => rand.Next())
                    .ToArray();

                foreach (var item in numbers)
                {
                    estimator.Add(item, 1 + rand.Next(20));
                }

                var quantiles =
                    numbers
                    .Select(x => estimator.GetProbLessThan(x))
                    .ToArray();

                return(quantiles);
            }

            // Run the same estimation run twice with the same serialized
            // object to use to test that the results are the same.
            var firstRun  = GetRandomQuantiles(initialEstimator);
            var secondRun = GetRandomQuantiles(deserialized);

            Assert.Equal(firstRun, secondRun);
        }
Пример #2
0
        public void QuantileSeedTest()
        {
            var seed = Rand.Int();

            double[] GetRandomQuantiles()
            {
                var rand      = new Random(seed);
                var estimator = new QuantileEstimator(rand.NextDouble());

                estimator.SetRandomSeed(rand.Next());

                var numbers =
                    Enumerable.Range(0, rand.Next(100))
                    .Select(x => rand.Next())
                    .ToArray();

                foreach (var item in numbers)
                {
                    estimator.Add(item, 1 + rand.Next(20));
                }

                var quantiles =
                    numbers
                    .Select(x => estimator.GetProbLessThan(x))
                    .ToArray();

                return(quantiles);
            }

            // Run the same estimation run twice with the same seed to test
            // that the results are the same.
            var firstRun  = GetRandomQuantiles();
            var secondRun = GetRandomQuantiles();

            Assert.Equal(firstRun, secondRun);
        }