Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. #include <vector>
  6.  
  7. static inline float Rand() {
  8.   return static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
  9. }
  10.  
  11. int main() {
  12.   srand (time(NULL));
  13.   unsigned long long a_w = 0, b_w = 0, c_w = 0, d_w = 0;
  14.   std::vector<double> a_v, b_v, c_v, d_v;
  15.   for (unsigned long long i = 0; i < 1000000; ++i) {
  16.     double x = 1;
  17.     double a = 100, b = 0, c = 0, d = 0;
  18.     for (int j = 0; j <= 100; ++j) {
  19.       double p = 2 * Rand() * log(1.02) - log(1.02);
  20.       x *= exp(p);
  21.       x *= pow(1.08, 1./250.);
  22.       b += 100.0 / (101.0 * x);
  23.       if (j == 50) c += 100.0 / x;
  24.     }
  25.     //printf("%.4f\n", x);
  26.     d += 100.0 / x;
  27.    
  28.     a *= x;
  29.     b *= x;
  30.     c *= x;
  31.     d *= x;
  32.     a_v.push_back(a);
  33.     b_v.push_back(b);
  34.     c_v.push_back(c);
  35.     d_v.push_back(d);
  36.     if (a > b && a > c && a > d) ++a_w;
  37.     if (b > a && b > c && b > d) ++b_w;
  38.     if (c > a && c > b && c > d) ++c_w;
  39.     if (d > a && d > b && d > c) ++d_w;
  40.   }
  41.   printf("%llu\t%llu\t%llu\t%llu\n", a_w, b_w, c_w, d_w);
  42.  
  43.   double a_m = 0, b_m = 0, c_m = 0, d_m = 0;
  44.   for (int i = 0; i < a_v.size(); ++i) {
  45.     a_m += a_v[i];
  46.     b_m += b_v[i];
  47.     c_m += c_v[i];
  48.     d_m += d_v[i];
  49.   }
  50.   a_m /= a_v.size();
  51.   b_m /= a_v.size();
  52.   c_m /= a_v.size();
  53.   d_m /= a_v.size();
  54.   double a_s = 0, b_s = 0, c_s = 0, d_s = 0;
  55.   for (int i = 0; i < a_v.size(); ++i) {
  56.     a_s += (a_v[i] - a_m) * (a_v[i] - a_m);
  57.     b_s += (b_v[i] - b_m) * (b_v[i] - b_m);
  58.     c_s += (c_v[i] - c_m) * (c_v[i] - c_m);
  59.     d_s += (d_v[i] - d_m) * (d_v[i] - d_m);
  60.   }
  61.   a_s /= a_v.size();
  62.   b_s /= a_v.size();
  63.   c_s /= a_v.size();
  64.   d_s /= a_v.size();
  65.   printf("%.4f\t%.4f\t%.4f\t%.4f\n", a_m, b_m, c_m, d_m);
  66.   printf("%.4f\t%.4f\t%.4f\t%.4f\n", a_s, b_s, c_s, d_s);
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement