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"); }
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"); }
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"); }