package syo;
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[102];
int[] q2=new int[102];
int[] point=new int[6000];
int[] point2=new int[6000];
int number;
int xx,yy;
int[] pon=new int[6000];
public static void main(String[] args) {
pro te=new pro();
}
pro(){
catchdata sub4=new catchdata();
sub4.makedata();
pon=sub4.pon;
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]);
}
int z1=0;
int sx,tx;
tx=0;
for(s=1;s<datanumber;s++){
z1=z1+y1[s];
for(sx=1;sx<y1[s]+1;sx++){
tx=tx+1;
point[tx]=s;
}
}
number=tx;
tx=0;
for(s=1;s<datanumber;s++){
for(sx=1;sx<y2[s]+1;sx++){
tx=tx+1;
point2[tx]=s;
}
}
number=tx;
System.out.println(number);
for(s=1;s<101;s++){
step();
q1[s]=xx;
q2[s]=yy;
}
int tr;
for(tr=1;tr<5000;tr++){
fast sub=new fast();
sub.y1=y1;
sub.q1=q1;
sub.pon=pon;
sub.y2=y2;
sub.q2=q2;
sub.point=point;
sub.point2=point2;
sub.number=number;
sub.makedata();
q1=sub.q1;
q2=sub.q2;
}
int c1,c2;
for(s=1;s<22;s++){
c1=0;
c2=0;
for(sx=1;sx<101;sx++){
if(q1[sx]==s)c1=c1+1;
if(q1[sx]==s)c2=c2+q2[sx];
}
System.out.println(s+","+pon[s]+","+c2/c1);
}
}
void step(){
double n=number*Math.random();
int n2=(int)n+1;
xx=point[n2];
n=number*Math.random();
n2=(int)n+1;
yy=point2[n2];
}
}
package syo;
public class fast{
int s,datanumber;
String[] data=new String[500];
int[] y1=new int[100];
int[] y2=new int[100];
int[] pon=new int[100];
int[] q1=new int[10000];
int[] q2=new int[10000];
int[] p1=new int[10000];
int[] p2=new int[10000];
int[] point=new int[10000];
int[] point2=new int[10000];
double[] v1=new double[1000];
double[] v2=new double[1000];
double[] v3=new double[1000];
int number;
int[] rank=new int[1000];
int[] rank2=new int[1000];
int[] rank3=new int[1000];
int[] delta=new int[1000];
int xx,yy;
void makedata(){
step();
int sx,sxs;
sxs=0;
for(sx=1;sx<101;sx++){
rep(sx);
v1[sx]=cal();
v2[sx]=cal2();
v3[sx]=cal3();
}
ranking();
ranking2();
ranking3();
for(s=1;s<101;s++){
delta[s]=rank[s]+rank2[s]+rank3[s];
}
int minx=100;
sx=0;
for(s=1;s<101;s++){
if(delta[s]<minx)sx=s;
if(delta[s]<minx)minx=delta[s];
}
q1[sx]=xx;
q2[sx]=yy;
}
void ranking(){
int r,s,sx,h;
int[] ch=new int[2001];
double maxu;
int t;
for(s=1;s<101;s++){
ch[s]=0;
}
for(r=1;r<101;r++){
int sxs=0;
double minu=9999;
for(s=1;s<101;s++){
h=0;
if(v1[s]<minu)h=h+1;
if(ch[s]<50)h=h+1;
if(h==2)minu=v1[s];
if(h==2)sxs=s;
}
rank[sxs]=r;
ch[sxs]=100;
}
}
void ranking2(){
int r,s,sx,h;
int[] ch=new int[2001];
double maxu;
int t;
for(s=1;s<101;s++){
ch[s]=0;
}
for(r=1;r<101;r++){
int sxs=0;
double minu=9999;
for(s=1;s<101;s++){
h=0;
if(v2[s]<minu)h=h+1;
if(ch[s]<50)h=h+1;
if(h==2)minu=v2[s];
if(h==2)sxs=s;
}
rank2[sxs]=r;
ch[sxs]=100;
}
}
void ranking3(){
int r,s,sx,h;
int[] ch=new int[2001];
double maxu;
int t;
for(s=1;s<101;s++){
ch[s]=0;
}
for(r=1;r<101;r++){
int sxs=0;
double minu=9999;
for(s=1;s<101;s++){
h=0;
if(v3[s]<minu)h=h+1;
if(ch[s]<50)h=h+1;
if(h==2)minu=v3[s];
if(h==2)sxs=s;
}
rank3[sxs]=r;
ch[sxs]=100;
}
}
void rep(int r2){
for(s=1;s<101;s++){
p1[s]=q1[s];
p2[s]=q2[s];
}
p1[r2]=xx;
p2[r2]=yy;
}
double cal(){
int s,z;
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]-number*z2[s]/100)*(y1[s]-number*z2[s]/100);
}
z1=Math.sqrt(z1);
return z1;
}
double cal2(){
int s,z;
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]-number*z2[s]/100)*(y2[s]-number*z2[s]/100);
}
z1=Math.sqrt(z1);
return z1;
}
void step(){
double n=number*Math.random();
int n2=(int)n+1;
xx=point[n2];
n=number*Math.random();
n2=(int)n+1;
yy=point2[n2];
}
double cal3(){
int s,z;
int s1;
int s2;
double z1=0;
for(s=1;s<101;s++){
s1=p1[s];
s2=pon[s1];
z1=z1+(p2[s]-s2)*(p2[s]-s2);
}
z1=Math.sqrt(z1);
return z1;
}
}
package syo;
import tool.readfile;
public class catchdata {
int s,datanumber;
String[] data=new String[500];
int[] pon=new int[500];
void makedata(){
readfile sub2=new readfile();
sub2.makedata("800.txt","UTF-8");
data=sub2.data;
datanumber=sub2.datanumber;
for(s=1;s<datanumber+1;s++){
double n=Double.parseDouble(data[s]);
int n1=(int)n/50+1;
pon[s]=n1;
}
}
}
最終更新:2016年04月16日 11:27