fork download
  1. #include <iostream>
  2. #include <map>
  3. #include <random>
  4.  
  5. double get_die_probability(unsigned int age)
  6. {
  7. const std::map<int, double> percents = {
  8. {0, 1.161756638},
  9. {1, 0.194279696},
  10. {5, 0.115889718},
  11. {10, 0.153797951},
  12. {15, 0.559759184},
  13. {20, 0.838678816},
  14. {25, 0.799340854},
  15. {30, 0.913264801},
  16. {35, 1.283487819},
  17. {40, 2.179927672},
  18. {45, 3.242747089},
  19. {50, 4.254341371},
  20. {55, 5.207398478},
  21. {60, 6.038474388},
  22. {65, 7.035735454},
  23. {70, 9.236823110},
  24. {75, 12.57703684},
  25. {80, 15.47280922},
  26. {85, 28.72402438}
  27. };
  28. auto it = percents.lower_bound(age);
  29. if (it == percents.end()) {
  30. return percents.rbegin()->second;
  31. }
  32. return it->second;
  33. }
  34.  
  35. int main()
  36. {
  37. std::random_device rd;
  38. std::mt19937 gen(rd());
  39. std::uniform_real_distribution<double> distribution(0, 100.);
  40.  
  41. unsigned int age = 0;
  42. for (;;) {
  43. auto percent = distribution(gen);
  44. if (percent <= get_die_probability(age)) {
  45. break;
  46. }
  47. ++age;
  48. std::cout << "It's your birthday! You turned: " << age << std::endl;
  49. }
  50. std::cout << "You die at " << age << std::endl;
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
It's your birthday! You turned: 1
It's your birthday! You turned: 2
It's your birthday! You turned: 3
It's your birthday! You turned: 4
It's your birthday! You turned: 5
It's your birthday! You turned: 6
It's your birthday! You turned: 7
It's your birthday! You turned: 8
It's your birthday! You turned: 9
It's your birthday! You turned: 10
It's your birthday! You turned: 11
It's your birthday! You turned: 12
It's your birthday! You turned: 13
It's your birthday! You turned: 14
It's your birthday! You turned: 15
It's your birthday! You turned: 16
It's your birthday! You turned: 17
It's your birthday! You turned: 18
It's your birthday! You turned: 19
It's your birthday! You turned: 20
It's your birthday! You turned: 21
It's your birthday! You turned: 22
It's your birthday! You turned: 23
It's your birthday! You turned: 24
It's your birthday! You turned: 25
It's your birthday! You turned: 26
It's your birthday! You turned: 27
It's your birthday! You turned: 28
It's your birthday! You turned: 29
It's your birthday! You turned: 30
It's your birthday! You turned: 31
It's your birthday! You turned: 32
It's your birthday! You turned: 33
It's your birthday! You turned: 34
It's your birthday! You turned: 35
It's your birthday! You turned: 36
It's your birthday! You turned: 37
It's your birthday! You turned: 38
It's your birthday! You turned: 39
It's your birthday! You turned: 40
It's your birthday! You turned: 41
It's your birthday! You turned: 42
It's your birthday! You turned: 43
It's your birthday! You turned: 44
It's your birthday! You turned: 45
It's your birthday! You turned: 46
You die at 46