package delya;
public class pro {
double[][] p=new double[3][3];
double[][] q=new double[3][3];
int[] point=new int[300];
int[] delta=new int[300];
double[][] v=new double[300][3];
int[][] gotok=new int[300][3];
int[] op=new int[300];
public static void main(String[] args) {
pro t=new pro();
}
pro(){
int s;
for(s=1;s<101;s++){
point[s]=1;
if(Math.random()>0.5)point[s]=2;
}
p[1][1]=0.9;
p[2][2]=0.9;
p[1][2]=0.1;
p[2][1]=0.1;
q[1][1]=0.9;
q[2][2]=0.9;
q[1][2]=0.1;
q[2][1]=0.1;
int de;
for(de=1;de<11;de++){
int sx=point[1];
v[1][1]=p[1][sx];
v[1][2]=p[2][sx];
int tx;
for(s=2;s<101;s++){
int p1=point[s];
for(sx=1;sx<3;sx++){
double u1=p[p1][sx];
double maxv=-999;
int sxs=0;
for(tx=1;tx<3;tx++){
double v1=v[s-1][tx]*u1*q[sx][tx];
if(v1>maxv)sxs=tx;
if(v1>maxv)maxv=v1;
}
gotok[s][sx]=sxs;
v[s][sx]=maxv;
}
}
sx=1;
if(v[100][2]>v[100][1])sx=2;
op[100]=sx;
for(s=1;s<100;s++){
sx=101-s;
int k=op[sx];
op[sx-1]=gotok[sx][k];
}
int[][] count=new int[3][3];
int[][] ch=new int[3][3];
count[1][1]=0;
count[1][2]=0;
count[2][1]=0;
count[2][2]=0;
ch[1][1]=0;
ch[1][2]=0;
ch[2][1]=0;
ch[2][2]=0;
for(s=1;s<101;s++){
int s1=point[s];
int s2=op[s];
count[s2][s1]=count[s2][s1]+1;
}
for(s=1;s<100;s++){
int s1=op[s];
int s2=op[s+1];
ch[s1][s2]=ch[s1][s2]+1;
}
int c1=count[1][1]+count[1][2];
double p1=0;
if(c1>0)p1=100*count[1][1]/c1;
p1=p1/100;
if(p1<0.6)p1=0.6;
if(p1<0.9*p[1][1])p1=0.9*p[1][1];
if(p1>1.1*p[1][1])p1=1.1*p[1][1];
p[1][1]=p1;
p[1][2]=1-p1;
c1=count[2][1]+count[2][2];
p1=0;
if(c1>0)p1=100*count[2][2]/c1;
p1=p1/100;
if(p1<0.6)p1=0.6;
if(p1<0.9*p[2][2])p1=0.9*p[2][2];
if(p1>1.1*p[2][2])p1=1.1*p[2][2];
p[2][2]=p1;
p[2][1]=1-p1;
c1=ch[2][1]+ch[2][2];
p1=0;
if(c1>0)p1=100*ch[2][2]/c1;
p1=p1/100;
if(p1>0.9)p1=0.9;
if(p1<0.6)p1=0.6;
if(p1<0.9*q[2][2])p1=0.9*q[2][2];
if(p1>1.1*q[2][2])p1=1.1*q[2][2];
q[2][2]=p1;
q[2][1]=1-p1;
c1=ch[1][1]+ch[1][2];
p1=0;
if(c1>0)p1=100*ch[1][1]/c1;
p1=p1/100;
if(p1<0.6)p1=0.6;
if(p1>0.9)p1=0.9;
if(p1<0.9*q[1][1])p1=0.9*q[1][1];
if(p1>1.1*q[1][1])p1=1.1*q[1][1];
q[1][1]=p1;
q[1][2]=1-p1;
System.out.println("A,"+q[1][1]+","+q[2][2]);
System.out.println("B,"+p[1][1]+","+p[2][2]);
}
}
}
最終更新:2016年04月29日 22:02