Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "log_duration.h"
- #include <iostream>
- #include <numeric>
- #include <algorithm>
- #include <random>
- #include <string>
- #include <vector>
- using namespace std;
- vector<float> ComputeAvgTempVar(const vector<vector<float>>& measures) {
- if (measures.empty()){
- vector<float> result;
- return result;
- }
- else{
- vector<float> result(measures[0].size());
- auto iter=measures.begin();
- auto days=measures.size();
- while(iter!=measures.end()){
- transform(result.begin(),result.end(),iter->begin(),result.begin(),plus<float>{});
- ++iter;
- }
- for (auto& it:result){
- it<0.f?it=0.f:it/=days;
- }
- return result;
- }
- }
- vector<float> ComputeAvgTempFunc(const vector<vector<float>>& measures) {
- if (measures.empty()){
- vector<float> result;
- return result;
- }
- else{
- vector<float> result(measures[0].size());
- auto iter=measures.begin();
- while(iter!=measures.end()){
- transform(result.begin(),result.end(),iter->begin(),result.begin(),plus<float>{});
- ++iter;
- }
- for (auto& it:result){
- it<0.f?it=0.f:it/=measures.size();
- }
- return result;
- }
- }
- vector<float> GetRandomVector(int size) {
- static mt19937 engine;
- uniform_real_distribution<float> d(-100, 100);
- vector<float> res(size);
- for (int i = 0; i < size; ++i) {
- res[i] = d(engine);
- }
- return res;
- }
- int main() {
- vector<vector<float>> data;
- data.reserve(5000);
- for (int i = 0; i < 5000; ++i) {
- data.push_back(GetRandomVector(5000));
- }
- vector<float> avg;
- for (int i=1;i<2;++i)
- {
- LOG_DURATION("ComputeAvgTemp (by var)"s);
- avg = ComputeAvgTempVar(data);
- }
- for (int i=1;i<2;++i)
- {
- LOG_DURATION("ComputeAvgTemp (by func)"s);
- avg = ComputeAvgTempFunc(data);
- }
- cout << "Total mean: "s << accumulate(avg.begin(), avg.end(), 0.f) / avg.size() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement