/****************************************************************************** * This program computes the mean and std. dev. of random floats. * * Copyright © 2020 Richard Lesh. All rights reserved. *****************************************************************************/ #undef NDEBUG #include "Utils.hpp" #include #include #include #include #include #include using namespace std; int main(int argc, char **argv) { if (argc != 2) { cout << "Syntax: " << argv[0] << " sample_size" << endl; exit(1); } int sample_size = Utils::stoiWithDefault(string(argv[1]), 10); vector samples = {}; double sum = 0.0; srand(time(0)); for (int i = 0; i < sample_size; ++i) { Utils::push(samples, rand()/(RAND_MAX + 1.0)); sum += samples[i]; } double mean = sum / sample_size; double variance = 0.0; for (int i = 0; i < sample_size; ++i) { variance += pow(samples[i] - mean, 2.0); } variance /= sample_size; cout << fmt::format("Sample mean: {0:.6f}", mean) << endl; cout << fmt::format("Sample std. dev.: {0:.6f}", sqrt(variance)) << endl; return 0; }