package mino;
import tool.*;
public class pro {
int s,datanumber,number;
String[] data=new String[600];
int[] point=new int[500];
double[] pointx=new double[31];
double[] p=new double[31];
int[][] c=new int[10001][50];
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++){
data[s]=rev_csv(data[s]);
String[] x=data[s].split(",");
point[s-1]=numx(x[1]);
}
number=datanumber-1;
int pp=0;
for(s=1;s<number+1;s++){
pp=pp+point[s];
}
for(s=1;s<number+1;s++){
pointx[s]=(double)point[s]/pp;
}
double p1=0;
for(s=1;s<number+1;s++){
p[s]=f(s,7,5);
p1=p1+p[s];
}
for(s=1;s<number+1;s++){
p[s]=p[s]/p1;
}
double z2=0;
for(s=1;s<number+1;s++){
z2=z2+(pointx[s]-p[s])*(pointx[s]-p[s])/p[s];
}
System.out.println(z2);
int tr;
for(tr=1;tr<10001;tr++){
for(s=1;s<31;s++){
c[tr][s]=0;
}
for(s=1;s<101;s++){
int n=randx();
c[tr][n]=c[tr][n]+1;
}
}
int c1=0;
for(tr=1;tr<10001;tr++){
double z=0;
for(s=1;s<number+1;s++){
double x1=(double)c[tr][s]/100;
z=z+(x1-p[s])*(x1-p[s])/p[s];
}
if(z>z2)c1=c1+1;
}
System.out.println(c1);
}
int randx(){
int s;
double[] px=new double[100];
px[1]=p[1];
for(s=2;s<number+1;s++){
px[s]=px[s-1]+p[s];
}
double m1=Math.random();
int nn=1;
for(s=1;s<number;s++){
if(m1>px[s])nn=s;
}
return nn;
}
double f(double x,double mu,double sig){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sig*sig);
f1=-(x-mu)*(x-mu)/(2*sig*sig);
return Math.exp(f1)/f2;
}
int numx(String str){
int nx;
nx=0;
try{
nx=Integer.parseInt(str);
}catch (Exception e) {}
return nx;
}
String rev_csv(String str){
String str5=str;
int px=str5.indexOf("\"");
while(px>-1){
str5=rev(str5);
px=str5.indexOf("\"");
}
return str5;
}
String rev(String str){
int p1=str.indexOf("\"");
int p2=str.indexOf("\"",p1+1);
String str1=str.substring(0,p1);
String str2=str.substring(p1+1,p2);
String str3=str.substring(p2+1,str.length());
str2=str2.replace(",","");
return str1+str2+str3;
}
}
最終更新:2016年12月10日 13:47