アットウィキロゴ

musume

package topic;
 
import tool.*;
 
public class pro {
 
    int s,datanumber;
    String[] data=new String[5000];
 int[] point=new int[500];
    int[] v=new int[50000];
        int number;
        int[] x=new int[101];
        double[] mu=new double[101];
          double[] sig=new double[101];
    double[] p=new double[101];
         double[][] qs=new double[101][101];  
        double[][] q=new double[101][101];  
 
         double[] ps=new double[101];
    public static void main(String[] args) {
        pro te=new pro();
    }
 
    pro(){
 
 
         readfile sub7=new readfile();
        sub7.makedata("data.csv","UTF-8");
        data=sub7.data;
        datanumber=sub7.datanumber; 
 
        for(s=2;s<datanumber+1;s++){
        String[] x=data[s].split(",");
        point[s-1]=Integer.parseInt(x[1]); 
        }
 
        int sx,tx;
        tx=0;
        for(s=1;s<datanumber;s++){
        for(sx=1;sx<point[s]+1;sx++){
        tx=tx+1;
       v[tx]=s;    
        }
        }
 
        number=tx;
 
       System.out.println(number);
       int tr; 
     for(tr=1;tr<11;tr++){
       for(s=1;s<101;s++){
        x[s]=randx();
          }
        mu[tr]=mux();  
       sig[tr]=sigx(mu[tr]);   
     }
 
 
 
     for(s=1;s<11;s++){
     p[s]=0.1;    
     }
 
 
     int delta;
     for(delta=1;delta<3;delta++){
 
     for(s=1;s<datanumber;s++){
     for(sx=1;sx<11;sx++){
     qs[s][sx]=f(s,mu[sx],sig[sx])*p[sx];    
     }       
     }
 
 
     for(s=1;s<datanumber;s++){
     double q1=0;
     for(sx=1;sx<11;sx++){
     q1=q1+qs[s][sx];    
     }
     for(sx=1;sx<11;sx++){
     q[s][sx]=qs[s][sx]/q1;
     }
     }
 
 
 
     for(sx=1;sx<11;sx++){
     mu[sx]=mumu(sx);
     sig[sx]=sigsig(sx);
     }
 
 
 
 
     for(sx=1;sx<11;sx++){
     ps[sx]=0;    
     }
 
     for(s=1;s<datanumber;s++){
    for(sx=1;sx<11;sx++){
     ps[sx]=ps[sx]+point[s]*q[s][sx];    
     }  
     }
 
 
 
      double q1=0;
     for(sx=1;sx<11;sx++){
     q1=q1+ps[sx];    
     }
 
     for(s=1;s<11;s++){
     p[s]=ps[s]/q1;
     }
 
 
     for(s=1;s<11;s++){
     System.out.println(delta+","+mu[s]+","+sig[s]+","+p[s]);
     }   
 
     }
 
 
    }
 
     double mumu(int sx){
 
        double m1,m2;
        m1=0;
        for(s=1;s<datanumber;s++){
        m1=m1+s*point[s]*q[s][sx];    
        }
 
        m2=0;
        for(s=1;s<datanumber;s++){
        m2=m2+point[s]*q[s][sx];    
        }
 
        return m1/m2;
    }
 
     double sigsig(int sx){
 
        double m1,m2;
        m1=0;
        for(s=1;s<datanumber;s++){
        m1=m1+(s-mu[sx])*(s-mu[sx])*point[s]*q[s][sx];    
        }
 
        m2=0;
        for(s=1;s<datanumber;s++){
        m2=m2+point[s]*q[s][sx];    
        }
 
        double m3=m2/m1;
        m3=Math.sqrt(m3);
 
        return m3;
    }
 
 
    double mux(){
 
        double m1;
        m1=0;
        for(s=1;s<101;s++){
        m1=m1+x[s];    
        }
        m1=m1/100;
 
        return m1;
    }
 
 
     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 sigx(double mm){
 
        double m1;
        m1=0;
        for(s=1;s<101;s++){
        m1=m1+(x[s]-mm)*(x[s]-mm);    
        }
        m1=m1/99;
        m1=Math.sqrt(m1);
        return m1;
    }
 
 
 
    int randx(){
        double n1;
        int n2;
        n1=number*Math.random();
        n2=(int)n1+1;
        int m1=v[n2];
    return m1;
        }
 
 
 
}
 
最終更新:2016年06月15日 02:17