/// <summary>
        /// Recalculates frequency statistics
        /// </summary>
        /// <param name="tasks">The tasks.</param>
        public override void reCalculate(preCalculateTasks tasks = preCalculateTasks.all)
        {
            if (blockReCall)
            {
                return;
            }
            blockReCall = true;
            Accept();
            _sumOfValues = 0;
            _maxValue    = int.MinValue;
            _minValue    = int.MaxValue;
            foreach (var pair in items)
            {
                _sumOfValues = _sumOfValues + pair.Key;
                _maxValue    = Math.Max(_maxValue, pair.Key);
                _minValue    = Math.Min(_minValue, pair.Key);
            }

            base.reCalculate(tasks);
            _avgValue = (((double)_sumOfValues) / ((double)Count));
            var valArray = items.Keys.getDoubleValues().ToArray();

            //  entropyFreq = Accord.Statistics.Measures.Entropy(valArray);
            varianceFreq      = valArray.GetVariance();     // Accord.Statistics.Measures.Variance(valArray, false);
            standardDeviation = valArray.GetStdDeviation(); //Accord.Statistics.Measures.StandardDeviation(valArray, _avgValue, true);

            Accept();
            blockReCall = false;
        }
        /// <summary>
        /// Recalculates frequency statistics
        /// </summary>
        /// <param name="tasks">The tasks.</param>
        public virtual void reCalculate(preCalculateTasks tasks = preCalculateTasks.all)
        {
            if (blockReCall)
            {
                return;
            }
            blockReCall = true;

            double count = Convert.ToDouble(Count);

            doMinMaxSum();

            Accept();

            //List<T> rank = getSorted();

            double _sumScore = Convert.ToDouble(totalScore);

            var valArray = items.Values.getDoubleValues().ToArray();

            //if (tasks.HasFlag(preCalculateTasks.avgDiversity))
            //{
            avgFreq             = _sumScore / count;
            _diversityAntiValue = _sumScore / (avgFreq * avgFreq);
            _diversityAntiRatio = (avgFreq * avgFreq) / _sumScore;
            _diversityRatio     = 1 - _diversityAntiRatio;
            //}

            //if (tasks.HasFlag(preCalculateTasks.entropyCoVarDev))
            //{
            //    //Measures.Entropy()

            var RFreqArray = GetRFreqArray();

            entropyFreq = RFreqArray.GetEntropy();

            varianceFreq = RFreqArray.GetVariance(false);
            //Accord.Statistics.Measures.Variance(valArray, true);
            standardDeviation = Math.Sqrt(varianceFreq); //RFreqArray.GetStdDeviation(false); // Accord.Statistics.Measures.StandardDeviation(valArray, avgFreq, true);
            //}

            Accept();
            blockReCall = false;
        }