アットウィキロゴ

v599

package gon;
 
public class nike{
 
int number;
  double[] mu=new double[11];
  double[] sig=new double[11];
 double[] mux=new double[11];
  double[] sigx=new double[11];
  double[] p=new double[11];
 
   double[] y1=new double[10001];
   double[] y2=new double[10001];
   double[] y3=new double[10001];
   double[] y4=new double[10001];
 
   double[] avg_mu=new double[30];
   double[] avg_sig=new double[30];
 
   int[] y_max=new int[30];
   int[] y_min=new int[30];
 
   int[] point=new int[100];
   int datanumber;
    double[] avg=new double[30];
 
   double[][] mat_p=new double[12][23];  
 
    double[][] ps=new double[23][12];  
 
 
     double[] mu_rank=new double[24];  
  double[] sig_rank=new double[24];  
 
    double makedata(){
 
           int s;
 
 
 
 
 
 
 
        int k;
        for(k=1;k<11;k++){
        double p1=0; 
        for(s=0;s<2000;s++){
        p1=p1+f(s,mu[k],sig[k]);
           }
 
     int tr=6;
 
 
     for(tr=1;tr<22;tr++){
 
        int tr1=y_min[tr];
 
        int tr2=y_max[tr];
 
        double p2=0;
        for(s=tr1;s<tr2;s++){
       p2=p2+f(s,mu[k],sig[k]);
        }    
 
        mat_p[k][tr]=p2/p1;
 
        }
 
        }
 
        int sx;
 
        for(s=1;s<22;s++){
        for(sx=1;sx<11;sx++){
        ps[s][sx]=0;
        }
        }
 
 
        for(s=1;s<22;s++){
        for(sx=1;sx<11;sx++){
        ps[s][sx]=ps[s][sx]+p[sx]*mat_p[sx][s];
        }
        }
 
        for(s=1;s<22;s++){
        double m1=0;
        double m2=0;
        for(sx=1;sx<11;sx++){
        m1=m1+ps[s][sx];
        m2=m2+ps[s][sx]*mux[sx];
        }
        mu_rank[s]=m2/m1;
 
        }
 
        for(s=1;s<22;s++){
        double m1=0;
        double m2=0;
        for(sx=1;sx<11;sx++){
        m1=m1+ps[s][sx];
        m2=m2+ps[s][sx]*sigx[sx];
        }
        sig_rank[s]=m2/m1;  
        }
 
        double z=0;
         for(s=1;s<22;s++){
         z=z+point[s]*f(avg[s],mu_rank[s],sig_rank[s]/Math.sqrt(point[s]));    
         }    
 
 
 
 
 
 
 
        return z;
 
 
 
 
    }
 
    double sample(double mumu,double sigsig) {
 
 
 
 
  double pi = Math.PI;
 
  double p1 = 0;
  double p2 = 0;
 
 
  double x1=Math.random();
  double x2=Math.random();
 
  double f1=Math.log(x1);
  double r=Math.sqrt(-2*f1)*Math.cos(2 * pi * x2);
 
  double z=mumu+sigsig*r;
 
 
 return z;
 
}
 
 
 
    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 mux,double sigx){
double pi,f1,f2;
 
        pi=Math.PI;
 
        f2=Math.sqrt(2*pi*sigx*sigx);
        f1=-(x-mux)*(x-mux)/(2*sigx*sigx);
 
        return Math.exp(f1)/f2;
}
 
 
 
}
 
最終更新:2016年12月21日 15:36