Пример #1
0
        public override DateTime Next()
        {
            if (DistributionFormula != null && DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(DistributionFormula.Invoke()));
            }

            if (DistributionFormula != null && MinSet && MaxSet)
            {
                var rnd = (int)(Max - Min).TotalMinutes;
                return(Min + TimeSpan.FromMinutes(DistributionFormula.Invoke() * rnd));
            }

            if (DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(rand.Next(ProbabilitiesSum)));
            }

            if (DistributionValues != null)
            {
                return(DistributionValues[rand.Next(DistributionValues.Length)]);
            }

            if (MinSet && MaxSet)
            {
                return(Min + TimeSpan.FromMinutes(rand.Next(0, (int)(Max - Min).TotalMinutes)));
            }

            throw new InvalidOperationException("Unknown calculations");
        }
        public override int Next()
        {
            if (DistributionFormula != null && DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(DistributionFormula.Invoke()));
            }

            if (DistributionFormula != null && MinSet && MaxSet)
            {
                return(DistributionFormula.Invoke() * Max + Min);
            }

            if (DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(rand.Next(ProbabilitiesSum)));
            }

            if (DistributionValues != null)
            {
                return(DistributionValues[rand.Next(DistributionValues.Length)]);
            }

            if (MinSet && MaxSet)
            {
                return(rand.Next(Min, Max + 1));
            }

            throw new InvalidOperationException("Unknown calculations");
        }
Пример #3
0
        public override TimeSpan Next()
        {
            if (DistributionFormula != null && DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(DistributionFormula.Invoke()));
            }

            if (DistributionFormula != null && MinSet && MaxSet)
            {
                return(DistributionFormula.Invoke() * Max + Min);
            }

            if (DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(rand.Next(ProbabilitiesSum)));
            }

            if (DistributionValues != null)
            {
                return(DistributionValues[rand.Next(DistributionValues.Length)]);
            }

            if (MinSet && MaxSet)
            {
                return(TimeSpan.FromMinutes(rand.Next((int)Min.TotalMinutes, (int)Max.TotalMinutes)));
            }

            throw new InvalidOperationException("Unknown calculations");
        }
Пример #4
0
        public override float Next()
        {
            var cent = cents ? (float)Math.Round((float)rand.NextDouble(), 2) : 0;

            if (DistributionFormula != null && DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(DistributionFormula.Invoke()) + cent);
            }

            if (DistributionFormula != null && MinSet && MaxSet)
            {
                return(DistributionFormula.Invoke() * Max + Min);
            }

            if (DistributionValues != null && MinSet && MaxSet)
            {
                var drawn = TakeDrawn(rand.Next(ProbabilitiesSum), out var index);
                var min   = index == 0 ? Min : DistributionValues[index - 1];
                var max   = index == DistributionValues.Length - 1 ? Max : DistributionValues[index + 1];
                return(rand.Next((int)min, (int)max) + cent);
            }

            if (DistributionValuesProbabilities != null)
            {
                return(TakeDrawn(rand.Next(ProbabilitiesSum)));
            }

            if (DistributionValues != null)
            {
                return(DistributionValues[rand.Next(DistributionValues.Length)]);
            }

            if (MinSet && MaxSet)
            {
                return(rand.Next((int)Min, (int)Max) + cent);
            }

            throw new InvalidOperationException("Unknown calculations");
        }