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