fork(2) download
  1. #include <iostream>
  2.  
  3. static int SIZE = 25; //Количество исходов (при повышении количества бросков, нужно
  4. //увеличивать и это)
  5. static int ROLLS = 5; //Количество бросков кубика
  6.  
  7. int main() {
  8.  
  9. double *mass = new double[SIZE]{};
  10. mass[0] = 1.0;
  11.  
  12. for (int i{}; i<ROLLS; i++)
  13. {
  14. double *temp = new double[SIZE]{};
  15. // 0
  16. temp[1] += mass[0] * 2 / 3;
  17. temp[2] += mass[0] / 3;
  18. //1
  19. temp[0] += mass[1] * 2 / 5;
  20. temp[2] += mass[1] * 2 / 5;
  21. temp[3] += mass[1] / 5;
  22. for (int j{2}; j<SIZE-2; j++)
  23. {
  24. temp[j-2] += mass[j] / 6;
  25. temp[j-1] += mass[j] / 3;
  26. temp[j+1] += mass[j] / 3;
  27. temp[j+2] += mass[j] / 6;
  28. }
  29. int top = SIZE-2;
  30. //top + 1
  31. temp[top] += mass[top+1] * 2 / 3;
  32. temp[top-1] += mass[top+1] / 3;
  33. //top
  34. temp[top+1] += mass[top] * 2 / 5;
  35. temp[top-1] += mass[top] * 2 / 5;
  36. temp[top-2] += mass[top] / 5;
  37. delete[] mass;
  38. mass = temp;
  39. }
  40. double mean = 0.0;
  41. for (int i{}; i<SIZE; i++)
  42. {
  43. std::cout << i << '\t' << mass[i] << std::endl;
  44. mean += i*mass[i];
  45. }
  46. std::cout << "mean = " << mean << std::endl;
  47. return 0;
  48. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
0	0.103292
1	0.229609
2	0.208786
3	0.155638
4	0.134815
5	0.084321
6	0.0442901
7	0.0252058
8	0.0111111
9	0.0026749
10	0.000257202
11	0
12	0
13	0
14	0
15	0
16	0
17	0
18	0
19	0
20	0
21	0
22	0
23	0
24	0
mean = 2.63267