package n2;
public class pro {
double[] p=new double[11];
double[] x=new double[101];
double mu,sig;
int[] z=new int[11];
double[] xs=new double[101];
public static void main(String[] args) {
pro test=new pro();
}
pro(){
int s;
for(s=1;s<11;s++){
p[s]=10;
}
for(s=1;s<101;s++){
x[s]=10*Math.random()+1;
}
int delta;
for(delta=1;delta<1000;delta++){
double x1=0;
for(s=1;s<101;s++){
x1=x1+x[s];
}
mu=x1/101;
x1=0;
for(s=1;s<101;s++){
x1=x1+(x[s]-mu)*(x[s]-mu);
}
x1=x1/99;
sig=Math.sqrt(x1);
double y=mu+sig*f();
int tr,trs;
trs=1;
double mind=99999;
for(tr=1;tr<101;tr++){
for(s=1;s<101;s++){
xs[s]=x[s];
}
xs[tr]=y;
count();
double d=k();
if(d<mind)trs=tr;
if(d<mind)mind=d;
}
System.out.println(k());
x[trs]=y;
}
}
void count(){
int s,sx;
int h=0;
for(s=1;s<11;s++){
z[s]=0;
for(sx=1;sx<101;sx++){
h=0;
if(xs[s]>s)h=h+1;
if(xs[s]<s+1)h=h+1;
if(h==2)z[s]=z[s]+1;
}
}
}
double k(){
int s;
double p1=0;
double[] f=new double[21];
for(s=1;s<11;s++){
p1=p1+p[s];
}
for(s=1;s<11;s++){
f[s]=p[s]/p1;
}
double xx=0;
for(s=1;s<11;s++){
double cc=(double)z[s]/100;
xx=xx+(cc-f[s])*(cc-f[s])/f[s];
}
return xx;
}
double f(){
double pi = Math.PI;
double x1=Math.random();
double x2=Math.random();
double f1=Math.log(x1);
double r=Math.sqrt(-2*f1)*Math.cos(2 * pi * x2);
return r;
}
}
最終更新:2016年03月13日 10:09