アットウィキロゴ

ベイズの練習5

package bs;
 
public class pro {
 
 int s;
 int[] x=new int[11];   
   double[] q=new double[11];
  double[] p=new double[11];
   int[] c=new int[11];   
  double[] z=new double[11];
 
   double[] y=new double[10001];
  public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
       for(s=1;s<11;s++){
       p[s]=0.1;     
       q[s]=0.1;
       }
 
  q[1]=0.05;
  q[10]=0.15;
 
 int sx,tr;  
 
for(tr=1;tr<1001;tr++){ 
 
for(s=1;s<11;s++){
c[s]=0;    
}
 
for(s=1;s<10001;s++){
sx=randx();    
c[sx]=c[sx]+1;
}
 for(s=1;s<11;s++){
z[s]=(double)c[s]/10000;    
 }
 
 double x1=0; 
 for(s=1;s<11;s++){
 x1=x1+(z[s]-q[s])* (z[s]-q[s])/q[s];
 }
 
 y[tr]=x1;
 
}
 
 
 
double x2=0; 
 for(s=1;s<11;s++){
 x2=x2+(p[s]-q[s])* (p[s]-q[s])/q[s];
 }
 
 System.out.println(x2);
 
 int s1,s2;
 s1=0;
 s2=0;
 for(s=1;s<1001;s++){
if(y[s]>x2)s1=s1+1;    
s2=s2+1;
} 
double r2=(double)s1/s2; 
 
System.out.println(s1+","+r2);
 
 
 
 
 
}
int randx(){
 
double[] qs=new double[11];
int s;
qs[1]=q[1];
for(s=2;s<11;s++){
qs[s]=q[s]+qs[s-1];    
}
double r1=qs[10]*Math.random();    
 
int sx=1;
for(s=1;s<11;s++){
if(r1>qs[s])sx=s+1;    
}
return sx;    
}
 
 
 
 
}
 
最終更新:2016年12月07日 16:46