package p5;
public class pro {
int[] y=new int[11];
int[] d=new int[11];
double[] delta=new double[11];
double[] p_y=new double[11];
double[] p_d=new double[11];
int[] sample_y=new int[101];
int[] sample_d=new int[101];
int d1,y1;
public static void main(String[] args) {
pro te=new pro();
}
pro(){
y[1]=50;
y[2]=20;
y[3]=10;
y[4]=10;
y[5]=10;
d[1]=30;
d[2]=30;
d[3]=20;
d[4]=10;
d[5]=10;
delta[1]=14;
delta[2]=25;
delta[3]=30;
delta[4]=45;
delta[5]=45;
int s;
for(s=1;s<101;s++){
sample_y[s]=rand_y();
sample_d[s]=rand_d();
}
System.out.println(point());
int tr;
for(tr=1;tr<200;tr++){
y1=rand_y();
d1=rand_d();
int mx;
double mins=99999;
int mxs=1;
for(mx=1;mx<101;mx++){
if(rep(mx)<mins)mxs=mx;
if(rep(mx)<mins)mins=rep(mx);
}
sample_y[mxs]=y1;
sample_d[mxs]=d1;
}
for(s=1;s<101;s++){
System.out.println(sample_y[s]+","+sample_d[s]);
}
}
double rep(int mx){
int s;
int[] y2=new int[101];
int[] d2=new int[101];
for(s=1;s<101;s++){
y2[s]=sample_y[s];
d2[s]=sample_d[s];
}
y2[mx]=y1;
d2[mx]=d1;
int sx;
int n1,d1;
double[] k=new double[11];
for(s=1;s<6;s++){
d1=0;
n1=0;
for(sx=1;sx<101;sx++){
if(y2[sx]==s)d1=d1+10*d2[sx];
if(y2[sx]==s)n1=n1+1;
}
k[s]=0;
if(n1>0)k[s]=(double)(d1/n1);
}
double sig=0;
for(s=1;s<6;s++){
if(k[s]>0)sig=sig+(k[s]-delta[s])*(k[s]-delta[s]);
}
return sig;
}
double point(){
int s,sx;
int n1,d1;
double[] k=new double[11];
for(s=1;s<6;s++){
d1=0;
n1=0;
for(sx=1;sx<101;sx++){
if(sample_y[sx]==s)d1=d1+10*sample_d[sx];
if(sample_y[sx]==s)n1=n1+1;
}
k[s]=0;
if(n1>0)k[s]=(double)(d1/n1);
}
double sig=0;
for(s=1;s<6;s++){
if(k[s]>0)sig=sig+(k[s]-delta[s])*(k[s]-delta[s]);
}
return sig;
}
int rand_y(){
double m=100*Math.random();
int[] q=new int[11];
int s;
q[0]=0;
for(s=1;s<6;s++){
q[s]=q[s-1]+y[s];
}
int n=1;
for(s=1;s<6;s++){
if(m>q[s])n=n+1;
}
return n;
}
int rand_d(){
double m=100*Math.random();
int[] q=new int[11];
int s;
q[0]=0;
for(s=1;s<6;s++){
q[s]=q[s-1]+d[s];
}
int n=1;
for(s=1;s<6;s++){
if(m>q[s])n=n+1;
}
return n;
}
}
最終更新:2015年09月14日 15:18