#include <iostream>
static int SIZE = 25; //Количество исходов (при повышении количества бросков, нужно
//увеличивать и это)
static int ROLLS = 5; //Количество бросков кубика
int main() {
double *mass = new double[SIZE]{};
mass[0] = 1.0;
for (int i{}; i<ROLLS; i++)
{
double *temp = new double[SIZE]{};
// 0
temp[1] += mass[0] * 2 / 3;
temp[2] += mass[0] / 3;
//1
temp[0] += mass[1] * 2 / 5;
temp[2] += mass[1] * 2 / 5;
temp[3] += mass[1] / 5;
for (int j{2}; j<SIZE-2; j++)
{
temp[j-2] += mass[j] / 6;
temp[j-1] += mass[j] / 3;
temp[j+1] += mass[j] / 3;
temp[j+2] += mass[j] / 6;
}
int top = SIZE-2;
//top + 1
temp[top] += mass[top+1] * 2 / 3;
temp[top-1] += mass[top+1] / 3;
//top
temp[top+1] += mass[top] * 2 / 5;
temp[top-1] += mass[top] * 2 / 5;
temp[top-2] += mass[top] / 5;
delete[] mass;
mass = temp;
}
double mean = 0.0;
for (int i{}; i<SIZE; i++)
{
std::cout << i << '\t' << mass[i] << std::endl;
mean += i*mass[i];
}
std::cout << "mean = " << mean << std::endl;
return 0;
}