Пример #1
0
        public Probability GetProbability(MonthDay infoStart, MonthDay infoFinish, IEnumerable <int> years, int key, CountIdentity identity)
        {
            var intervals     = GetIntarvalsFor(infoStart, infoFinish, years).OrderBy(x => x.DateStart);
            var probabilities = new List <ProbabilityItem>();

            foreach (var year in years)
            {
                var    yearData     = GetYearData(intervals, infoStart, infoFinish, year);
                double top          = 0;
                double down         = 0;
                double max          = -10 ^ 6;
                double min          = 10 ^ 6;
                double sum          = 0;
                double periodResult = 0;
                foreach (var yearItem in yearData)
                {
                    var days = (yearItem.DateFinish.Day - yearItem.DateStart.Day) + 1;

                    top  += (days * yearItem.IntervalValue[key]);
                    down += days;

                    if (yearItem.IntervalValue[key] > max)
                    {
                        max = yearItem.IntervalValue[key];
                    }
                    if (yearItem.IntervalValue[key] < min)
                    {
                        min = yearItem.IntervalValue[key];
                    }
                    sum += yearItem.IntervalValue[key];
                }
                if (yearData.Any())
                {
                    if (identity == CountIdentity.Av)
                    {
                        periodResult = top / down;
                    }
                    else if (identity == CountIdentity.Sum)
                    {
                        periodResult = sum;
                    }
                    else if (identity == CountIdentity.Max)
                    {
                        periodResult = max;
                    }
                    else if (identity == CountIdentity.Min)
                    {
                        periodResult = min;
                    }

                    probabilities.Add(new ProbabilityItem(year, periodResult));
                }
            }

            var result = new Probability(infoStart, infoFinish, key);

            result.Probabilities = CountProbobilityValueInList(probabilities).ToList();

            return(result);
        }
Пример #2
0
        public List <Probability> GetProbabilities(string riverName, MonthDay infoStart, MonthDay infoFinish, int key, CountIdentity identity)
        {
            List <Probability> result;
            var river = rivers.FirstOrDefault(x => x.Name == riverName);

            if (river == null)
            {
                return(null);
            }

            result = new List <Probability>();
            result.Add(river.GetProbability(infoStart, infoFinish, years, key, identity));

            return(result);
        }