アットウィキロゴ

mcv

package mc3;
 
 
public class pro {
 
 
   int[] th=new int[3];
   int[] c=new int[3];
   int[] y=new int[3];
   int s;
 
   double[] us=new double[1001];
   int[][] cs=new int[1001][3];
   int[][] ys=new int[1001][3];
   int[] bs=new int[1001];
   double delta;
     double[][] avgc=new double[3][3];
      double[][] avgy=new double[3][3];
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
   pro(){ 
 
 
       delta=0.01;
 
       th[1]=100;
       th[2]=200;
 
 
       c[1]=70;
       y[1]=70;
       c[2]=80;
       y[2]=80;
 
       int tr;
 
    for(tr=1;tr<2000;tr++){
 
 
  for(s=1;s<101;s++){
  cs[s][1]=c[1]+ep();
  ys[s][1]=y[1]+ep();
  cs[s][2]=c[2]+ep();
  ys[s][2]=y[2]+ep();
  bs[s]=ys[s][1]-cs[s][1]+ys[s][2]-cs[s][2];        
  us[s]=u(cs[s][1],ys[s][1],th[1])+u(cs[s][2],ys[s][2],th[2]);
  }
 
  double minu;
      int h;
 
      minu=999;
    for(s=1;s<101;s++){  
    h=0;
    if(us[s]<minu)h=h+1;
    if(bs[s]>-1)h=h+1;
    if(h==2)minu=us[s];
    }
 
 
    for(s=1;s<101;s++){  
    if(bs[s]<0)us[s]=minu;
    } 
 
    int tx,sx;
    int n;
 
    for(tx=1;tx<3;tx++){
    for(sx=-1;sx<2;sx++){
    n=0;
    avgc[sx+1][tx]=0;
   for(s=1;s<101;s++){
  h=0;
  if(cs[s][tx]==c[tx]+sx)n=n+1; 
  if(cs[s][tx]==c[tx]+sx)avgc[sx+1][tx]=avgc[sx+1][tx]+us[s]; 
    }
   if(n>0)avgc[sx+1][tx]=avgc[sx+1][tx]/n; 
    }
    }
 
 
    for(tx=1;tx<3;tx++){
    for(sx=-1;sx<2;sx++){
    n=0;
    avgy[sx+1][tx]=0;
   for(s=1;s<101;s++){
  h=0;
  if(ys[s][tx]==y[tx]+sx)n=n+1; 
  if(ys[s][tx]==y[tx]+sx)avgy[sx+1][tx]=avgy[sx+1][tx]+us[s]; 
    }
   if(n>0)avgy[sx+1][tx]=avgy[sx+1][tx]/n; 
    }
    }
 
 
    double maxc,maxy;
   maxc=-999;
   maxy=-999;
   int cx,yx;
 
   for(tx=1;tx<3;tx++){
 
   cx=0;
   yx=0;
 
   for(sx=-1;sx<2;sx++){ 
   if(avgc[sx+1][tx]>maxc)cx=sx; 
   if(avgc[sx+1][tx]>maxc)maxc=avgc[sx+1][tx]; 
   } 
 
    for(sx=-1;sx<2;sx++){ 
    if(avgy[sx+1][tx]>maxy)yx=sx; 
    if(avgy[sx+1][tx]>maxy)maxy=avgy[sx+1][tx]; 
   } 
 
 
 
    c[tx]=c[tx]+cx;
    y[tx]=y[tx]+yx;
 
 
   }
 
   }
 
 
 
 
 
 
 
 
 
   }
int ep(){
  double p1;
  int e1;
      p1=Math.random();
      e1=0;
      if(p1<0.3)e1=-1;
       if(p1>0.7)e1=1;
      return e1;
 
  }
double u(int c1,int y1,int th){
double u1;
u1=Math.log(c1*delta)+Math.log(1-(double)y1/th);
return u1;    
}   
 
 
 
 
 
}
 
最終更新:2014年03月23日 12:35