fork download
  1. #include <iostream>
  2. #include <random>
  3. #include <cstdint>
  4. #include <tuple>
  5. #include <algorithm>
  6.  
  7. //計算機以外での実行を禁ずる。
  8. std::size_t DoOne(std::size_t N, std::size_t C) {
  9. std::size_t V = 0;
  10. std::size_t Re = N;
  11. std::size_t T = 0;
  12.  
  13. std::random_device rd;
  14. std::mt19937 mt(rd());
  15. //std::mt19937 mt;
  16. std::uniform_int_distribution<std::size_t> UI(1, 10);
  17. do {
  18. N = Re;
  19. Re = 0;
  20. T = 0;
  21. for (std::size_t i = 0; i < N; i++) {
  22. T = std::max(T,UI(mt));
  23.  
  24. if (T >= C) { Re++; }
  25.  
  26. }
  27. V += T;
  28. }while(Re != 0);
  29.  
  30. return V;
  31. }
  32.  
  33. int main() {
  34. std::uintmax_t V = 0;
  35.  
  36. std::size_t DiceCount = 10;
  37. std::size_t NumberLimit = 5;
  38. std::size_t L = 900000;
  39. for (std::size_t i = 0; i < L; i++) {
  40. V += DoOne(DiceCount, NumberLimit);
  41. }
  42.  
  43. std::cout << "Do " << L << " count." << "Average:" << V / (double)L << std::endl;
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 4.98s 4532KB
stdin
Standard input is empty
stdout
Do 900000 count.Average:135.982