package p2;
public class pro {
int[] y=new int[11];
double[] p=new double[11];
int number_sample,number;
int[] sample_y=new int[151];
double[] sample_p=new double[11];
public static void main(String[] args) {
pro te=new pro();
}
pro(){
number=5;
number_sample=100;
y[1]=10;
y[2]=20;
y[3]=50;
y[4]=20;
y[5]=10;
fast();
int s;
for(s=1;s<number_sample+1;s++){
sample_y[s]=randx();
}
f();
int tr;
for(tr=1;tr<101;tr++){
f();
double sig=check();
System.out.println(sig);
int n1=randx();
int m1=op(n1);
sample_y[m1]=n1;
}
for(s=1;s<number+1;s++){
System.out.println(sample_p[s]+","+p[s]);
}
}
int op(int n){
int m,ms;
double mins=99999;
ms=1;
for(m=1;m<number_sample+1;m++){
double s1=shuffle(n,m);
if(s1<mins)ms=m;
if(s1<mins)mins=s1;
}
return ms;
}
double shuffle(int n,int m){
int[] yy=new int[151];
double[] pp=new double[11];
int s;
for(s=1;s<number_sample+1;s++){
yy[s]=sample_y[s];
}
yy[m]=n;
for(s=1;s<number+1;s++){
pp[s]=0;
}
int[] q=new int[50];
int sx;
for(sx=1;sx<number+1;sx++){
q[sx]=0;
}
for(s=1;s<number_sample+1;s++){
for(sx=1;sx<number+1;sx++){
if(yy[s]==sx)q[sx]=q[sx]+1;
}
}
for(sx=1;sx<number+1;sx++){
pp[sx]=(double)q[sx]/number_sample;
}
double sig=0;
for(s=1;s<number+1;s++){
sig=sig+(pp[s]-p[s])*(pp[s]-p[s]);
}
return sig;
}
double check(){
int s;
double sig=0;
for(s=1;s<number+1;s++){
sig=sig+(p[s]-sample_p[s])*(p[s]-sample_p[s]);
}
return sig;
}
void f(){
int s;
for(s=1;s<number+1;s++){
sample_p[s]=0;
}
int[] q=new int[50];
int sx;
for(sx=1;sx<number+1;sx++){
q[sx]=0;
}
for(s=1;s<number_sample+1;s++){
for(sx=1;sx<number;sx++){
if(sample_y[s]==sx)q[sx]=q[sx]+1;
}
}
for(sx=1;sx<number+1;sx++){
sample_p[sx]=(double)q[sx]/number_sample;
}
}
void fast(){
int sx;
int y1=0;
for(sx=1;sx<number+1;sx++){
y1=y1+y[sx];
}
for(sx=1;sx<number+1;sx++){
p[sx]=(double)y[sx]/y1;
}
}
int randx(){
int s,y1;
y1=0;
for(s=1;s<number+1;s++){
y1=y1+y[s];
}
int[] q=new int[50];
q[0]=0;
for(s=1;s<6;s++){
q[s]=q[s-1]+y[s];
}
double m=y1*Math.random();
int n=1;
for(s=1;s<number+1;s++){
if(m>q[s])n=s+1;
}
return n;
}
}
最終更新:2015年09月14日 10:22