Advertisement
neongm

Coefficient of correlation

May 2nd, 2021
986
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <random>
  4. #include <algorithm> // not necessary
  5. #include <numeric>
  6.  
  7. double midvalue(const std::vector<double> &_array)
  8. {
  9.     return std::accumulate(_array.begin(), _array.end(), 0.0) / _array.size();
  10. }
  11.  
  12. double square_root(const double& _value)
  13. {
  14.     return pow(_value, 0.5);
  15. }
  16.  
  17. double sum(const std::vector<double>& _array)
  18. {
  19.     return std::accumulate(_array.begin(), _array.end(), 0.0);
  20. }
  21.  
  22. double thefuck(const std::vector<double> _x, const std::vector<double> _y)
  23. {
  24.     size_t n = _x.size();
  25.     double mid_x = midvalue(_x);
  26.     double mid_y = midvalue(_y);
  27.  
  28.     // sum is the upper part here
  29.     double sum = 0.0;
  30.     for (size_t i = 0; i < n; i++)
  31.     {
  32.         double first = _x[i] - mid_x;
  33.         double second = _y[i] - mid_y;
  34.         sum += first * second;
  35.     }
  36.  
  37.     // lower part being calculated here:
  38.     double sum_x = 0.0;
  39.     for (size_t i = 0; i < n; i++)
  40.     {
  41.         double diff = _x[i] - mid_x;
  42.         sum_x += pow(diff, 2);
  43.     }
  44.    
  45.     double sum_y = 0.0;
  46.     for (size_t i = 0; i < n; i++)
  47.     {
  48.         double diff = _y[i] - mid_y;
  49.         sum_y += pow(diff, 2);
  50.     }
  51.  
  52.     double lower_part = square_root(sum_x * sum_y);
  53.  
  54.     // finally:
  55.     return sum / lower_part;
  56. }
  57.  
  58. int main()
  59. {
  60.     std::vector<double> x;
  61.     std::vector<double> y;
  62.  
  63.     for (size_t i = 0; i < 50; i++)
  64.     {
  65.         x.push_back((double)rand() / 100);
  66.         y.push_back((double)rand() / 100);
  67.     }
  68.  
  69.     std::cout << thefuck(x, y);
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement