アットウィキロゴ

練習

package tr;
 
 
public class pro {
 
    int[][] x=new int[101][3];
    int s,sx;
   int[] card=new int[3];
 
    public static void main(String[] args) {
        pro test=new pro();
    }
   pro(){ 
 
 
       for(s=1;s<50;s++){
       x[s][1]=1;
       x[s][2]=1;
       }
 
       for(s=50;s<80;s++){
       x[s][1]=1;
       x[s][2]=2;
       }
 
       for(s=80;s<90;s++){
       x[s][1]=2;
       x[s][2]=1;
       }
 
       for(s=90;s<101;s++){
       x[s][1]=2;
       x[s][2]=2;
       }
 
       int tr;
 
       for(tr=1;tr<1001;tr++){
 
       makecard();
 
       s=select();
 
       x[s][1]=card[1];
       x[s][2]=card[2];
       }
 
 
 
 
   }
 
   int select(){
   int c,cx;
   double minv,v1;
    minv=9999;
   cx=0; 
   for(c=1;c<101;c++){    
   v1=replacev(c);
   if(v1<minv)cx=c;
   if(v1<minv)minv=v1;
   }
 
   return cx;
 
   }
 
 
 
   double replacev(int c){
   int s,sx;
   int[][] count=new int[3][3];
   double[][] q=new double[3][3];
 
       for(s=1;s<3;s++){
        for(sx=1;sx<3;sx++){
       count[s][sx]=0;
        }
   }
 
       int s1,s2;
 
   for(s=1;s<101;s++){
   s1=x[s][1];
   s2=x[s][2];
   if(s==c)s1=card[1];
   if(s==c)s2=card[2];
   count[s1][s2]=count[s1][s2]+1;     
   }   
 
   for(s=1;s<3;s++){
        for(sx=1;sx<3;sx++){
       q[s][sx]=(double)count[s][sx]/100;
        }
   }
 
   double e; 
 
   e=0;
     for(s=1;s<3;s++){
        for(sx=1;sx<3;sx++){
       e=e+(q[s][sx]-0.25)*(q[s][sx]-0.25);
        }
   }
 
       return e;
 
   }
 
   void makecard(){ 
   double p1;
       p1=Math.random();
   card[1]=1;
   if(p1>0.5)card[1]=2;
       p1=Math.random();
   card[2]=1;
   if(p1>0.5)card[2]=2; 
 
   }
}
 
最終更新:2014年03月18日 22:35