Рекомендуйте [закрытую] библиотеку статистики.NET с открытым исходным кодом

Что я не могу понять, так это то, как я запускаю pre () и выполняю трудоемкую задачу, в то время как выполняются first () и second () и third (), но третий запускается, когда pre закончено?

Исходя из этого вопроса, насколько я понимаю, вы хотите:

  1. Запускать pre, first и second одновременно
  2. ]
  3. Как только pre завершит выполнение, запустите third

Если это так, то следующий код сделает это:

var obj = {test: "Test"};

async function pre(obj) {console.log(`${pre.name} :`, obj); return obj;}
async function first(obj)  {console.log(`${first.name} :`, obj)}
async function second(obj) {console.log(`${second.name} :`, obj)}
async function third(obj)  {console.log(`${third.name} :`, obj)}

Promise.all([first(obj), second(obj), pre(obj).then(third)]);

[ 116] функция берет массив функций, которые возвращают обещание и выполняет их параллельно. Обратите внимание на pre(obj).then(third). Это выполнит функцию pre и после завершения выполнит функцию third.

25
задан Mark Heath 26 September 2008 в 13:06
поделиться

7 ответов

Я нашел это на веб-сайте CodeProject. Это похоже на хороший класс C# для обработки большинства основных статистических функций.

7
ответ дан 28 November 2019 в 20:54
поделиться

Необходимо быть осторожными. Существует несколько способов вычислить стандартное отклонение, которое дало бы тот же ответ, если бы арифметика с плавающей точкой была прекрасна. Они все точны для некоторых наборов данных, но некоторые намного лучше, чем другие при некоторых обстоятельствах.

метод я видел предложенный, вот тот, который, скорее всего, даст плохие ответы. Я использовал его сам, пока это не отказало на мне.

См. Сравнивать три метода вычисления стандартного отклонения .

17
ответ дан 28 November 2019 в 20:54
поделиться
8
ответ дан 28 November 2019 в 20:54
поделиться

Взгляните на MathNet, который это не специально для статистики, но могла бы быть полезная функциональность для того, что Вы хотите

7
ответ дан 28 November 2019 в 20:54
поделиться

Я решил, что это было более быстро для записи моего собственного, которое просто сделало то, в чем я нуждался. Вот код...

/// <summary>
/// Very basic statistical analysis routines
/// </summary>
public class Statistics
{
    List<double> numbers;
    public double Sum { get; private set; }
    public double Min { get; private set; }
    public double Max { get; private set; }
    double sumOfSquares;

    public Statistics()
    {
        numbers = new List<double>();
    }

    public int Count
    {
        get { return numbers.Count; }
    }

    public void Add(double number)
    {
        if(Count == 0)
        {
            Min = Max = number;
        }
        numbers.Add(number);
        Sum += number;
        sumOfSquares += number * number;
        Min = Math.Min(Min,number);
        Max = Math.Max(Max,number);            
    }

    public double Average
    {
        get { return Sum / Count; }
    }

    public double StandardDeviation
    {
        get { return Math.Sqrt(sumOfSquares / Count - (Average * Average)); }
    }

    /// <summary>
    /// A simplistic implementation of Median
    /// Returns the middle number if there is an odd number of elements (correct)
    /// Returns the number after the midpoint if there is an even number of elements
    /// Sorts the list on every call, so should be optimised for performance if planning
    /// to call lots of times
    /// </summary>
    public double Median
    {
        get
        {
            if (numbers.Count == 0)
                throw new InvalidOperationException("Can't calculate the median with no data");
            numbers.Sort();
            int middleIndex = (Count) / 2;
            return numbers[middleIndex];
        }
    }
}
3
ответ дан 28 November 2019 в 20:54
поделиться

Apache Maths.Common и запустите его через IKVM.

5
ответ дан 28 November 2019 в 20:54
поделиться

AForge.NET имеет пространство имен AForge.Math, предоставляющее некоторые базовые функции статистики: Гистограмма, среднее значение, медиана, stddev, энтропия.

1
ответ дан 28 November 2019 в 20:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: