アットウィキロゴ

p999kkk

package topuc;
 
 
public class pro {
 
 int[] x=new int[1000];
 int[][] y=new int[10000][11];   
 double[] mu=new double[10001];
  double[] sig=new double[10001];
 
 
  double[][] q=new double[101][11];   
  double[][] p=new double[101][11]; 
 
    public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
        int s;
 
        for(s=1;s<101;s++){
        x[s]=s;    
        }
 
        int sx;
 
        for(s=1;s<11;s++){
        for(sx=1;sx<11;sx++){
        y[s][sx]=(int)(100*Math.random())+1;
        }    
 
        }
 
 
        for(s=1;s<11;s++){
        mu[s]=mu(s);
        sig[s]=sig(s);
       }
 
        int tr;
 
        for(tr=1;tr<101;tr++){
 
        for(s=1;s<101;s++){
        double y1=x[s];    
        for(sx=1;sx<11;sx++){
        double p1=f(y1,mu[sx],sig[sx]);
        q[s][sx]=p1;
        }
        }
 
        for(s=1;s<101;s++){
        double p1=0; 
        for(sx=1;sx<11;sx++){
        p1=p1+q[s][sx];
        }
        for(sx=1;sx<11;sx++){
        p[s][sx]=q[s][sx]/p1;
        }
        }
 
     for(s=1;s<11;s++){
        mu[s]=mux(s);
     }   
 
         for(s=1;s<11;s++){
        sig[s]=sigx(s);
        }   
 
        }
 
 
 
 
        for(s=1;s<101;s++){
        for(sx=1;sx<11;sx++){
        if(p[s][sx]>0.2)System.out.println(x[s]+","+mu[sx]);    
        }    
        }
 
 
 
    }
 
 
 
     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;
}
 
 
 
    double sig(int s){
 
        int sx;
        double s1=0;
        for(sx=1;sx<11;sx++){
        s1=s1+(y[s][sx]-mu[s])*(y[s][sx]-mu[s]);    
        }
        s1=s1/9;
        s1=Math.sqrt(s1);
        return s1;
 
 
 
    }
 
 
    double mu(int s){
 
        int sx;
        double m1=0;
        for(sx=1;sx<11;sx++){
        m1=m1+y[s][sx];    
        }
        m1=m1/10;
        return m1;
 
    }
 
 
     double mux(int s){
 
        int sx;
        double m1=0;
        double m2=0;
        for(sx=1;sx<101;sx++){
        m1=m1+p[sx][s]*x[sx];    
        }
        m2=0;
        for(sx=1;sx<101;sx++){
        m2=m2+p[sx][s];    
        }
 
        m1=m1/m2;
        return m1;
 
    }
 
     double sigx(int s){
 
        int sx;
        double m1=0;
        double m2=0;
        for(sx=1;sx<101;sx++){
        m1=m1+p[sx][s]*(x[sx]-mu[s])*(x[sx]-mu[s]);
        }
        m2=0;
        for(sx=1;sx<101;sx++){
        m2=m2+p[sx][s];    
        }
 
        m1=m1/m2;
        m1=Math.sqrt(m1);
        return m1;
 
    }
 
 
 
}
 
最終更新:2016年06月12日 17:01