アットウィキロゴ

hrt

package mino;
 
import tool.*;
 
public class pro {
 
    int s,datanumber,number;
    String[] data=new String[600];
    int[] point=new int[500];
    double[] pointx=new double[31];
    double[] p=new double[31];
    int[][] c=new int[10001][50];
 
 
    public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
        readfile sub2=new readfile();
        sub2.makedata("data.csv","UTF-8");
        data=sub2.data;
        datanumber=sub2.datanumber;     
 
        for(s=2;s<datanumber+1;s++){
        data[s]=rev_csv(data[s]);
        String[] x=data[s].split(",");
        point[s-1]=numx(x[1]);
        }
 
        number=datanumber-1;
 
        int pp=0;
         for(s=1;s<number+1;s++){
        pp=pp+point[s];
        }
 
 
        for(s=1;s<number+1;s++){
        pointx[s]=(double)point[s]/pp;
        }
 
 
 
        double p1=0;
        for(s=1;s<number+1;s++){
        p[s]=f(s,7,5);    
        p1=p1+p[s];
        }
 
        for(s=1;s<number+1;s++){
        p[s]=p[s]/p1;    
        }
 
        double z2=0;
for(s=1;s<number+1;s++){
z2=z2+(pointx[s]-p[s])*(pointx[s]-p[s])/p[s]; 
}     
System.out.println(z2);
 
 
       int tr;
        for(tr=1;tr<10001;tr++){
        for(s=1;s<31;s++){
         c[tr][s]=0;   
        }
for(s=1;s<101;s++){
int n=randx();
c[tr][n]=c[tr][n]+1;  
}        
}
 
 
 
int c1=0;        
for(tr=1;tr<10001;tr++){
double z=0;
for(s=1;s<number+1;s++){
double x1=(double)c[tr][s]/100;
z=z+(x1-p[s])*(x1-p[s])/p[s]; 
}     
if(z>z2)c1=c1+1;
 }
System.out.println(c1);
 
 
 
 
 
 
    }
int randx(){
 
    int s;
    double[] px=new double[100];
    px[1]=p[1];
    for(s=2;s<number+1;s++){
    px[s]=px[s-1]+p[s];
    }
 
    double m1=Math.random();
    int nn=1;
    for(s=1;s<number;s++){
    if(m1>px[s])nn=s;
    }
 
 
 
    return nn;
}
 
 
       double f(double x,double mu,double sig){
double pi,f1,f2;
 
        pi=Math.PI;
 
        f2=Math.sqrt(2*pi*sig*sig);
        f1=-(x-mu)*(x-mu)/(2*sig*sig);
 
        return Math.exp(f1)/f2;
}
 
 
    int numx(String str){
 
    int nx;
 
    nx=0;
 
 try{
 
    nx=Integer.parseInt(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}    
    String rev_csv(String str){
 
        String str5=str;
        int px=str5.indexOf("\"");
 
 
 
        while(px>-1){
       str5=rev(str5);
       px=str5.indexOf("\"");   
        }
        return str5;
    }
 
    String rev(String str){
 
        int p1=str.indexOf("\"");
        int p2=str.indexOf("\"",p1+1);
 
     String str1=str.substring(0,p1);   
        String str2=str.substring(p1+1,p2);  
        String str3=str.substring(p2+1,str.length());
        str2=str2.replace(",","");
 
        return str1+str2+str3;
 
    }
 
 
}
 
最終更新:2016年12月10日 13:47