问题如图
E={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
P=[0,1/2,0,0,1/2,0,0,0,0,0,0,0,0,0,0,0;
1/3,0,1/3,0,0,1/3,0,0,0,0,0,0,0,0,0,0;
0,1/3,0,1/3,0,0,1/3,0,0,0,0,0,0,0,0,0;
0,0,1/2,0,0,0,0,1/2,0,0,0,0,0,0,0,0;
1/3,0,0,0,0,1/3,0,0,1/3,0,0,0,0,0,0,0;
0,1/4,0,0,1/4,0,1/4,0,0,1/4,0,0,0,0,0,0;
0,0,1/4,0,0,1/4,0,1/4,0,0,1/4,0,0,0,0,0;
0,0,0,1/3,0,0,1/3,0,0,0,0,1/3,0,0,0,0;
0,0,0,0,1/3,0,0,0,0,1/3,0,0,1/3,0,0,0;
0,0,0,0,0,1/4,0,0,1/4,0,1/4,0,0,1/4,0,0;
0,0,0,0,0,0,1/4,0,0,1/4,0,1/4,0,0,1/4,0;
0,0,0,0,0,0,0,1/3,0,0,1/3,0,0,0,0,1/3;
0,0,0,0,0,0,0,0,1/2,0,0,0,0,1/2,0,0;
0,0,0,0,0,0,0,0,0,1/3,0,0,1/3,0,1/3,0;
0,0,0,0,0,0,0,0,0,0,1/3,0,0,1/3,0,1/3;
0,0,0,0,0,0,0,0,0,0,0,1/2,0,0,1/2,0];
N=10000;
for k=1:N
n=1;
T=N;
x=1;
X=[x];
while n<=T
R=rand();
D=P(X(end),:);
for j=1:16
if R<=sum(D(1:j))
X=[X,j];
break;
end
end
n=length(X);
end
S(k)=X(end);
end
pos=(S==8)|(S~=13);
num=sum(pos);
Prob=num/N
查看了一下你的程序,小白鼠行动以及统计判断有点问题,我修改了程序如下,试验100000概率结果为0.5525
如果结果还满意,望采纳
%状态空间
E={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
%状态转移概率
P=[0,1/2,0,0,1/2,0,0,0,0,0,0,0,0,0,0,0;
1/3,0,1/3,0,0,1/3,0,0,0,0,0,0,0,0,0,0;
0,1/3,0,1/3,0,0,1/3,0,0,0,0,0,0,0,0,0;
0,0,1/2,0,0,0,0,1/2,0,0,0,0,0,0,0,0;
1/3,0,0,0,0,1/3,0,0,1/3,0,0,0,0,0,0,0;
0,1/4,0,0,1/4,0,1/4,0,0,1/4,0,0,0,0,0,0;
0,0,1/4,0,0,1/4,0,1/4,0,0,1/4,0,0,0,0,0;
0,0,0,1/3,0,0,1/3,0,0,0,0,1/3,0,0,0,0;
0,0,0,0,1/3,0,0,0,0,1/3,0,0,1/3,0,0,0;
0,0,0,0,0,1/4,0,0,1/4,0,1/4,0,0,1/4,0,0;
0,0,0,0,0,0,1/4,0,0,1/4,0,1/4,0,0,1/4,0;
0,0,0,0,0,0,0,1/3,0,0,1/3,0,0,0,0,1/3;
0,0,0,0,0,0,0,0,1/2,0,0,0,0,1/2,0,0;
0,0,0,0,0,0,0,0,0,1/3,0,0,1/3,0,1/3,0;
0,0,0,0,0,0,0,0,0,0,1/3,0,0,1/3,0,1/3;
0,0,0,0,0,0,0,0,0,0,0,1/2,0,0,1/2,0];
%试验次数
N = 10000;
%结果判定矩阵
S = zeros(N,1);
for k=1:N %试验开始
x=1;%位置归零
flag = 0;%初始化标签
while flag==0 %小鼠开始移动(直到捡到食物或被电击)
R=rand();%获取随机选择
D=P(x,:);%获取当前位置转移概率向量
x = max(find((cumsum(D)>R),1,'first'),1);%随机位置保存
if x==8
flag = 1;
end
if x==13
flag = -1;
end
end
S(k)=flag;%单次试验停止原因,触电或找到食物
end
Prob=sum(S==1)/N;