fork download
  1. #include <math.h>
  2. #include <stdint.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. #include <algorithm>
  6. #include <limits>
  7. #include <vector>
  8. using namespace std;
  9.  
  10. uint32_t Rand() {
  11. static uint64_t x =
  12. 88172645463325252ULL ^ static_cast<uint64_t>(time(nullptr));
  13. x = x ^ (x << 13); x = x ^ (x >> 7);
  14. return static_cast<uint32_t>(x = x ^ (x << 17));
  15. }
  16.  
  17. double Simulate(double leverage) {
  18. double value = 1.0;
  19. for (int i = 0; i < 250; i++) {
  20. double rate = 1.00016;
  21. if (Rand() % 2 == 0) {
  22. rate *= 1.015;
  23. } else {
  24. rate /= 1.015;
  25. }
  26. value += leverage * value * (rate - 1);
  27. }
  28. return value;
  29. }
  30.  
  31. int main() {
  32. vector<double> result;
  33. double sum = 0.0, count = 0.0;
  34. for (int i = 0 ; i <= 1000000; i++) {
  35. result.push_back(Simulate(1.2));
  36. sum += result.back();
  37. count++;
  38. }
  39. sort(result.begin(), result.end());
  40. printf("Max: %.3f\n", result.back());
  41. printf("Average: %.3f\n", sum / count);
  42. printf("Median: %.3f\n", result[result.size() / 2]);
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 4.54s 3464KB
stdin
Standard input is empty
stdout
Max: 4.674
Average: 1.085
Median: 1.042