アットウィキロゴ

p0999

package kan;
 
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import tool.*;
 
public class pro {
 
  int s,datanumber;
    String[] data=new String[500000];
    int[] d=new int[50];
    int[] y=new int[50];
    double[] delta=new double[500];
    int number;
    double[] c=new double[30];
 
 int[] sample_y=new int[101];
 int[] sample_d=new int[101];
 
 double sigma,sig_y,sig_d;
 
 int y1,d1;
 
    public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
           readx("data.csv");
 
 
             for(s=1;s<datanumber+1;s++){
             String[] x=data[s].split(",");
             y[s-1]=numx(x[1]);
             d[s-1]=numx(x[2]);
             delta[s-1]=num(x[3]);
             }
 
             number=datanumber-1;
 
             System.out.println(number);
 
             for(s=1;s<21;s++){
             c[s]=50*s-25;    
             }
             c[21]=1200;
 
              int s;
        for(s=1;s<101;s++){
        sample_y[s]=rand_y();
        sample_d[s]=rand_d();
        }
 
 
        point();
 
         System.out.println(sigma);
 
 
 
         int n;
 
        for(n=1;n<6;n++){
 
    int tr;
 
 
 
    for(tr=1;tr<1001;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();
 
 
    System.out.println(sigma);
 
        }
 
    for(s=1;s<101;s++){
        System.out.println(sample_y[s]+","+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;
        double[] k=new double[31];
 double d1;
 
        for(s=1;s<22;s++){
        d1=0;
        n1=0;
        for(sx=1;sx<101;sx++){
        int sp=d2[sx];
        if(y2[sx]==s)d1=d1+c[sp];
        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<22;s++){
        if(k[s]>0)sig=sig+(k[s]-delta[s])*(k[s]-delta[s]);
        }   
 
 
        double z=0;
 
        for(s=1;s<22;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<22;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+sy/sig_y+sd/sig_d;
 
 
 
 
    }
 
 
 
 
      void point(){
 
        int s,sx;
 
        int n1;
        double[] k=new double[101];
 double d1;
 
        for(s=1;s<22;s++){
        d1=0;
        n1=0;
        for(sx=1;sx<101;sx++){
        int sp=sample_d[sx];
        if(sample_y[sx]==s)d1=d1+c[sp];
        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<22;s++){
        if(k[s]>0)sig=sig+(k[s]-delta[s])*(k[s]-delta[s]);
        }   
 
 
        sigma=sig;
 
        double z=0;
 
        for(s=1;s<22;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<22;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_d(){
 
        double m=5012*Math.random();
 
        int[] q=new int[22];
 
        int s;
        q[0]=0;
        for(s=1;s<22;s++){
        q[s]=q[s-1]+d[s];
        }
 
        int n=1;
        for(s=1;s<21;s++){
        if(m>q[s])n=n+1;
        }
 
        return n;
    }
 
 
 
 
    int rand_y(){
 
        double m=5012*Math.random();
 
        int[] q=new int[51];
 
        int s;
        q[0]=0;
        for(s=1;s<22;s++){
        q[s]=q[s-1]+y[s];
        }
        int n=1;
        for(s=1;s<21;s++){
        if(m>q[s])n=n+1;
        }
 
        return n;
    }
 
 
 
      int numx(String str){
    int nx;
    nx=0;
 try{
    nx=Integer.parseInt(str);
 }catch (Exception e) {}
 return nx;
 
}
 
 
double num(String str){
    double nx;
    nx=0;
 try{
    nx=Double.parseDouble(str);
 }catch (Exception e) {}
 return nx;
 
} 
 
 
 void readx(String file){
 
String str;
BufferedReader br;  
int s;
s=0;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"SJIS"));  
while((str = br.readLine()) != null) {  
s=s+1;
data[s]=str;  
}
br.close();
} catch (IOException e) {System.out.println(e);}  
 
datanumber=s;
 
} 
 
 
 
 
}
 
最終更新:2015年09月15日 14:40