アットウィキロゴ

p0お09

package p5;
 
 
public class pro {
 
 int[] y=new int[11];
 int[] d=new int[11];
 double[] delta=new double[11];   
 double[] p_y=new double[11];
  double[] p_d=new double[11];
 
 int[] sample_y=new int[101];
 int[] sample_d=new int[101];
 
 int d1,y1;
 
 double sig_y,sig_d,sigma;
 
    public static void main(String[] args) {
        pro te=new pro();
    }
 
    pro(){
 
        y[1]=50;
        y[2]=20;
        y[3]=10;
        y[4]=10;
        y[5]=10;
 
        d[1]=30;
        d[2]=30;
        d[3]=20;
        d[4]=10;
        d[5]=10;
 
        delta[1]=14;
        delta[2]=25;
        delta[3]=30;
        delta[4]=45;
        delta[5]=45;
 
        int s;
        for(s=1;s<101;s++){
        sample_y[s]=rand_y();
        sample_d[s]=rand_d();
        }
 
 
     point();
 
     int n;
 
     for(n=1;n<51;n++){
        int tr;
 
        for(tr=1;tr<11;tr++){
 
        y1=rand_y();
         d1=rand_d();
 
         int mx;
 
         double mins=99999;
         int mxs=1;
 
     for(mx=1;mx<101;mx++){   
    if(rep(mx)<mins)mxs=mx; 
    if(rep(mx)<mins)mins=rep(mx);    
    }
 
    sample_y[mxs]=y1;
    sample_d[mxs]=d1;
 
 
    }
 
   point();
    }
 
 
 
 
      int n1,sx;
 
      double d2;
 
 
        for(s=1;s<6;s++){
        d2=0;
        n1=0;
        for(sx=1;sx<101;sx++){
        if(sample_y[sx]==s)d2=d2+10*sample_d[sx];
        if(sample_y[sx]==s)n1=n1+1;    
        }
        if(n1>0)System.out.println(s+","+d2/n1);    
        }
 
 
        for(s=1;s<101;s++){
        if(sample_y[s]==4) System.out.println(sample_d[s]);  
        }
 
 
    }
 
    double rep(int mx){
 
        int s;
        int[] y2=new int[101];
 int[] d2=new int[101];
 
 
        for(s=1;s<101;s++){
        y2[s]=sample_y[s];    
        d2[s]=sample_d[s];   
        }
 
        y2[mx]=y1;
        d2[mx]=d1;
 
   int sx;
 
        int n1,d1;
        double[] k=new double[11];
 
        for(s=1;s<6;s++){
        d1=0;
        n1=0;
        for(sx=1;sx<101;sx++){
        if(y2[sx]==s)d1=d1+10*d2[sx];
        if(y2[sx]==s)n1=n1+1;    
        }
        k[s]=0;
        if(n1>0)k[s]=(double)(d1/n1);    
        }
 
        double sig=0;
        for(s=1;s<6;s++){
        if(k[s]>0)sig=sig+(k[s]-delta[s])*(k[s]-delta[s]);
        }   
 
 
        double z=0;
 
        for(s=1;s<6;s++){
        n1=0;
        for(sx=1;sx<101;sx++){
        if(y2[sx]==s)n1=n1+1;    
        }
        z=z+(n1-y2[s])*(n1-y2[s]);    
        }
 
        double sy=z;
 
        z=0;
 
        for(s=1;s<6;s++){
        n1=0;
        for(sx=1;sx<101;sx++){
        if(d2[sx]==s)n1=n1+1;    
        }
        z=z+(n1-d[s])*(n1-d[s]);    
        }
 
        double sd=z;
 
 
        return sig/sigma+sd/sig_d+sy/sig_y;
 
 
 
 
    }
 
 
 
 
 
    void point(){
 
        int s,sx;
 
        int n1,d1;
        double[] k=new double[11];
 
        for(s=1;s<6;s++){
        d1=0;
        n1=0;
        for(sx=1;sx<101;sx++){
        if(sample_y[sx]==s)d1=d1+10*sample_d[sx];
        if(sample_y[sx]==s)n1=n1+1;    
        }
        k[s]=0;
        if(n1>0)k[s]=(double)(d1/n1);    
        }
 
        double sig=0;
        for(s=1;s<6;s++){
        if(k[s]>0)sig=sig+(k[s]-delta[s])*(k[s]-delta[s]);
        }   
 
 
        sigma=sig;
 
        double z=0;
 
        for(s=1;s<6;s++){
        n1=0;
        for(sx=1;sx<101;sx++){
        if(sample_y[sx]==s)n1=n1+1;    
        }
        z=z+(n1-y[s])*(n1-y[s]);    
        }
 
        sig_y=z;
 
        z=0;
 
        for(s=1;s<6;s++){
        n1=0;
        for(sx=1;sx<101;sx++){
        if(sample_d[sx]==s)n1=n1+1;    
        }
        z=z+(n1-d[s])*(n1-d[s]);    
        }
 
        sig_d=z;
 
 
 
    }
 
 
 
 
 
 
    int rand_y(){
 
        double m=100*Math.random();
 
        int[] q=new int[11];
 
        int s;
        q[0]=0;
        for(s=1;s<6;s++){
        q[s]=q[s-1]+y[s];
        }
        int n=1;
        for(s=1;s<6;s++){
        if(m>q[s])n=n+1;
        }
 
        return n;
    }
 
 
       int rand_d(){
 
        double m=100*Math.random();
 
        int[] q=new int[11];
 
        int s;
        q[0]=0;
        for(s=1;s<6;s++){
        q[s]=q[s-1]+d[s];
        }
 
        int n=1;
        for(s=1;s<6;s++){
        if(m>q[s])n=n+1;
        }
 
        return n;
    }
 
 
 
}
 
最終更新:2015年09月14日 15:47