package ren2;
public class pro {
double[] p=new double[11];
double[] y=new double[11001];
double mu,sig;
public static void main(String[] args) {
pro t=new pro();
}
pro(){
int s;
for(s=1;s<11;s++){
p[s]=0.1;
}
int tr=0;
for(tr=1;tr<10001;tr++){
int[] x=new int[101];
for(s=1;s<11;s++){
x[s]=0;
}
for(s=1;s<101;s++){
int sx=randx();
x[sx]=x[sx]+1;
}
double d=0;
for(s=1;s<11;s++){
d=d+(x[s]-100*p[s])*(x[s]-100*p[s]);
}
y[tr]=d;
}
double z=0;
for(s=1;s<10001;s++){
z=z+Math.log(y[s]);
}
mu=z/10000;
z=0;
for(s=1;s<10001;s++){
z=z+(Math.log(y[s])-mu)*(Math.log(y[s])-mu);
}
z=z/10000;
sig=Math.sqrt(z);
double yy=Math.log(y[1]);
System.out.println(yy+","+f(yy,mu,sig));
System.out.println(mu+","+sig);
}
int randx(){
int s;
double[] px=new double[11];
px[0]=0;
for(s=1;s<11;s++){
px[s]=px[s-1]+p[s];
}
double r1=px[10]*Math.random();
int sx=1;
for(s=1;s<10;s++){
if(r1>px[s])sx=s+1;
}
return sx;
}
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月19日 17:28