package c5;
import tool.*;
public class pro {
int s,datanumber;
String[] data=new String[500];
int[] y1=new int[100];
int[] y2=new int[100];
int[] q1=new int[10000];
int[] q2=new int[10000];
int[] p1=new int[10000];
int[] p2=new int[10000];
int[] c=new int[10000];
int xx,yy;
public static void main(String[] args) {
pro t=new pro();
}
pro(){
readfile sub2=new readfile();
sub2.makedata("data.csv","UTF-8");
data=sub2.data;
datanumber=sub2.datanumber;
for(s=2;s<datanumber+1;s++){
String[] x=data[s].split(",");
y1[s-1]=Integer.parseInt(x[1]);
y2[s-1]=Integer.parseInt(x[2]);
}
datanumber=datanumber-1;
System.out.println(datanumber);
for(s=1;s<101;s++){
step();
q1[s]=xx;
q2[s]=yy;
}
int tr;
for(tr=1;tr<10001;tr++){
fast sub5=new fast();
sub5.y1=y1;
sub5.datanumber=datanumber;
sub5.q1=q1;
sub5.q2=q2;
sub5.makedata();
q1=sub5.q1;
q2=sub5.q2;
sec sub6=new sec();
sub6.y2=y2;
sub6.datanumber=datanumber;
sub6.q2=q2;
sub6.q1=q1;
sub6.makedata();
q2=sub6.q2;
q1=sub6.q1;
}
for(s=1;s<22;s++){
}
}
void rep(int r){
for(s=1;s<101;s++){
p1[s]=q1[s];
p2[s]=q2[s];
}
p1[r]=xx;
p2[r]=xx;
}
void step(){
double n=21*Math.random();
xx=(int)n+1;
n=21*Math.random();
yy=(int)n+1;
}
}
package c5;
public class fast{
int s,datanumber;
String[] data=new String[500];
int[] y1=new int[100];
int[] y2=new int[100];
int[] q1=new int[10000];
int[] q2=new int[10000];
int[] p1=new int[10000];
int[] p2=new int[10000];
int[] c=new int[10000];
int xx,yy;
void makedata(){
step();
int sx,sxs;
sxs=0;
double minx=999999;
for(sx=1;sx<101;sx++){
rep(sx);
double d1=cal();
if(d1<minx)sxs=sx;
if(d1<minx)minx=d1;
}
System.out.println("a"+minx);
q1[sxs]=xx;
q2[sxs]=yy;
}
void rep(int r){
for(s=1;s<101;s++){
p1[s]=q1[s];
p2[s]=q2[s];
}
p1[r]=xx;
p2[r]=xx;
}
void step(){
double n=21*Math.random();
xx=(int)n+1;
n=21*Math.random();
yy=(int)n+1;
}
double cal(){
int s,z;
z=0;
for(s=1;s<22;s++){
z=z+y1[s];
}
int[] z2=new int[500];
for(s=1;s<101;s++){
int sx=p1[s];
z2[sx]=z2[sx]+1;
}
double z1=0;
for(s=1;s<22;s++){
z1=z1+(y1[s]-z*z2[s]/100)*(y1[s]-z*z2[s]/100);
}
z1=z1/21;
z1=Math.sqrt(z1);
return z1;
}
}
public class sec{
int s,datanumber;
String[] data=new String[500];
int[] y1=new int[100];
int[] y2=new int[100];
int[] q1=new int[10000];
int[] q2=new int[10000];
int[] p1=new int[10000];
int[] p2=new int[10000];
int[] c=new int[10000];
int xx,yy;
void makedata(){
step();
int sx,sxs;
sxs=0;
double minx=999999;
for(sx=1;sx<101;sx++){
rep(sx);
double d1=cal();
if(d1<minx)sxs=sx;
if(d1<minx)minx=d1;
}
System.out.println("b"+minx);
q1[sxs]=xx;
q2[sxs]=yy;
}
void rep(int r){
for(s=1;s<101;s++){
p1[s]=q1[s];
p2[s]=q2[s];
}
p1[r]=xx;
p2[r]=xx;
}
void step(){
double n=21*Math.random();
xx=(int)n+1;
n=21*Math.random();
yy=(int)n+1;
}
double cal(){
int s,z;
z=0;
for(s=1;s<22;s++){
z=z+y2[s];
}
int[] z2=new int[500];
for(s=1;s<101;s++){
int sx=p2[s];
z2[sx]=z2[sx]+1;
}
double z1=0;
for(s=1;s<22;s++){
z1=z1+(y2[s]-z*z2[s]/100)*(y2[s]-z*z2[s]/100);
}
z1=z1/21;
z1=Math.sqrt(z1);
return z1;
}
}
最終更新:2016年04月15日 15:42