#include <cstdarg>
#include <iostream>
#define d(i) (i+2)
using namespace std;
int main (void)
{
double d0[11],a=36;
int i,j,k;
double d1[2][11]={0},d2[11][11],ans[11]={0},t,tt[2]={0};
for(i=0;i<11;i++)
{
if(i<6)d0[i]=(i+1)/a;//小於六給予機率值
else d0[i]=(11-i)/a;//大於六給予機率值
}
for(i=0;i<11;i++)
{
d1[0][i]=d0[i];
for(j=0;j<11;j++)//給予矩陣機率值。並將爆掉的情況給予機率0
{
d2[i][j]=d0[i];
if (((d(i)<=7)&&(d(i)-d(j)>3))||((d(i)>7)&&(d(j)-d(i)>3))) d2[i][j]=0;
}
}
for(k=0;k<25;k++)//25次的矩陣迴圈
{
for(i=0;i<11;i++)//單次矩陣運算
for(j=0;j<11;j++)
{
d1[1][i]+=(d1[0][j]*d2[i][j]);
if (((d(i)<=7)&&(d(i)-d(j)>1))||((d(i)>7)&&(d(j)-d(i)>1))) tt[0]+=(d1[0][j]*d2[i][j]);
//將用到三花的機率累加起來
if (((d(i)<=7)&&(d(i)-d(j)>0))||((d(i)>7)&&(d(j)-d(i)>0))) tt[1]+=(d1[0][j]*d2[i][j]);
//將用到三花和一花的機率累加起來
}
for(i=0;i<11;i++)//將矩陣之結果設為起始值,並將結果歸零
{
d1[0][i]=d1[1][i];
d1[1][i]=0;
}
}
for(i=0,t=0;i<11;i++)//輸出停留結果(驗算用)
{
cout<<d1[0][i]<<endl;
t+=d1[0][i];
}
cout<<endl<<t<<endl;//輸出機率值
cout<<endl<<tt[0]<<endl;//輸出三花使用數
cout<<endl<<tt[1]-tt[0]<<endl;//輸出一花使用數
cout<<endl<<200*(tt[1]-tt[0])+600*tt[0]<<endl;//輸出單次期望金額
system("pause");
return 0;
}
|