アットウィキロゴ

15%

package vb;
 
 
public class pro {
 
    int[] point=new int[11];
   int s,number,datanumber;
   double mu,sig;
   double[] p=new double[11];
 
   double[] delta=new double[50001];
 
 
    public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
        number=10;
 
 
 
        for(s=1;s<11;s++){
        point[s]=10+s;    
        }
 
        int p2=0;
         for(s=1;s<11;s++){
        p2=p2+point[s];
        }
 
        datanumber=p2;
 
 
        mu=5;
        sig=3;
 
        for(s=1;s<11;s++){
        p[s]=f(s,mu,sig);
        }
 
        double p1=0;
        for(s=1;s<11;s++){
        p1=p1+p[s]; 
        }
 
 
        for(s=1;s<11;s++){
        p[s]=p[s]/p1;
        }
 
 
        double e1=0;
        for(s=1;s<11;s++){
        e1=e1+(point[s]-p2*p[s])*(point[s]-p2*p[s])/p[s];    
        }
 
        /*e1*/
 
 
 
 
       check sub=new check();
       sub.p=p;
       sub.number=number;
       sub.datanumber=datanumber;
       int n=sub.makedata(e1);
 
 
        System.out.println(n);
 
 
 
 
 
 
 
 
 
 
    }
    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;
}
 
}
 
 
package vb;
 
 
public class trial {
 
int s,number,datanumber;
int[] count=new int[500];    
double[] p=new double[100];    
 
double makedata(){
 
 
      for(s=1;s<datanumber+1;s++){
       int n=randx();
       count[n]=count[n]+1; 
       }
 
 
    double e2=0;
        for(s=1;s<number+1;s++){
        e2=e2+(count[s]-datanumber*p[s])*(count[s]-datanumber*p[s])/p[s];    
        }    
 
 
        return e2;
 
 
}
 
    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;
}
 
 
}
 
package vb;
 
 
 
public class check {
 
    int[] point=new int[11];
   int s,number,datanumber;
   double mu,sig;
   double[] p=new double[11];
 
   double[] delta=new double[50001];
 
 
 
 
    int makedata(double e1){
 
 
 
       int tr;
       for(tr=1;tr<10001;tr++){
       trial sub=new trial();
       sub.p=p;
       sub.number=number;
       sub.datanumber=datanumber;
       delta[tr]=sub.makedata();
       }
 
 
      int m1=0;
 
 
      for(tr=1;tr<10001;tr++){
      if(delta[tr]>e1)m1=m1+1;    
      }
 
      return m1;
 
 
 
 
    }
    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;
}
 
}
 
最終更新:2016年12月12日 06:48