math_util.hpp 785 字节
Newer Older
xiaonuo911teamo's avatar
init...  
xiaonuo911teamo 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#pragma once 
namespace math{
template<typename T,
    template <typename, typename = std::allocator<T> > class Container>
double average(const Container<T>& data)
{
    int len  = data.size();
    double sum = 0.0;
    for (auto x : data)
        sum += x;
    return sum / len;
}

template<typename T,
    template <typename, typename = std::allocator<T> > class Container>
double variance(const Container<T>& data)
{
    int len  = data.size();
    double sum = 0.0;
    double avg = average(data);
    for (auto x : data)
        sum += pow(x - avg, 2);
    return sum / len;
}

template<typename T,
    template <typename, typename = std::allocator<T> > class Container>
double standar_deviation(const Container<T>& data)
{
    double sd = variance(data);
    return sqrt(sd);
}
}