コード例 #1
0
        public double MakeValue(VarianceModel variance, double progress)
        {
            var isTopHalf            = GetRandom() >= 0.5 ? -1 : 1;
            var randomnessComponent  = Math.Pow(GetRandom(), isTopHalf * variance.Randomness);
            var progressionComponent = Math.Pow(progress, variance.Progression);
            var desiredValue         = randomnessComponent * progressionComponent;
            var normalizedValue      = Math.Min(1, desiredValue);

            return(normalizedValue);
        }
コード例 #2
0
        public ActionResult UpsertVariance(VarianceModel model)
        {
            Guid calculationId;

            if (!Guid.TryParse(model.calculation.id, out calculationId))
            {
                return(Json(new { model.id, sucess = false }, JsonRequestBehavior.DenyGet));
            }
            var id       = model.id;
            var update   = true;
            var variance =
                context.Variances.Find(id) ??
                context.Variances
                .FirstOrDefault(v =>
                                (v.CalculationId == calculationId) &&
                                (v.ColumnName == model.columnName));

            if (variance == null)
            {
                update   = false;
                variance = context.Variances.Create();
            }
            variance.CalculationId = calculationId;
            variance.ColumnName    = model.columnName;
            variance.MaxValue      = (model.minValue > model.maxValue) ? model.minValue : model.maxValue;
            variance.MinValue      = (model.maxValue < model.minValue) ? model.maxValue : model.minValue;

            if (!update)
            {
                variance = context.Variances.Add(variance);
            }

            context.SaveChanges();

            return(Json(new { id = variance.Id, sucess = true }, JsonRequestBehavior.DenyGet));
        }
コード例 #3
0
 public double ProportionAlong(VarianceModel variance, double progress, double minValue, double maxValue) => minValue + MakeValue(variance, progress) * (maxValue - minValue);