package bar;
public class pro {
int th;
int[] c=new int[101];
int[] y=new int[101];
int[] delta_c=new int[101];
int[] delta_y=new int[101];
int s;
public static void main(String[] args) {
pro test=new pro();
}
pro(){
th=50;
for(s=1;s<101;s++){
c[s]=10;
y[s]=10;
delta_c[s]=1;
delta_y[s]=1;
}
int tr;
for(tr=1;tr<1000;tr++){
for(s=1;s<101;s++){
c[s]=c[s]+delta_c[s];
y[s]=y[s]+delta_y[s];
}
for(s=1;s<101;s++){
check(s);
}
for(s=1;s<101;s++){
trial(s);
}
}
int c1,y1;
c1=0;
y1=0;
for(s=1;s<101;s++){
c1=c1+c[s];
y1=y1+y[s];
}
System.out.println(c1/100+","+y1/100);
}
void trial(int s){
int b1;
b1=bud();
double p1;
p1=Math.random();
if(p1<0.05){
if(b1>0)shuffle_p(s);
if(b1<0)shuffle_m(s);
}
}
void check(int s){
int z;
z=0;
if(c[s]<1)z=100;
if(y[s]<0)z=100;
if(y[s]>th-1)z=100;
if(c[s]<1)c[s]=1;
if(y[s]<0)y[s]=0;
if(y[s]>th-1)y[s]=th-1;
int b1;
if(z>50){
b1=bud();
if(b1>-1)shuffle_p(s);
if(b1<0)shuffle_m(s);
}
}
int bud(){
int b1,s;
b1=0;
for(s=1;s<101;s++){
b1=b1+y[s]-c[s];
}
return b1;
}
void shuffle_p(int s){
double u1,u2;
u1=u(c[s]+1,y[s]);
u2=u(c[s],y[s]-1);
delta_c[s]=0;
delta_y[s]=0;
int z;
z=0;
if(u1>u2)z=100;
if(z>50)delta_c[s]=1;
if(z<50)delta_y[s]=-1;
}
void shuffle_m(int s){
double u1,u2;
u1=u(c[s]-1,y[s]);
u2=u(c[s],y[s]+1);
delta_c[s]=0;
delta_y[s]=0;
int z;
z=0;
if(u1>u2)z=100;
if(z>50)delta_c[s]=-1;
if(z<50)delta_y[s]=1;
}
double u(int c1,int y1){
double delta=0.01;
double u1=Math.log(c1*delta)+Math.log(1-(double)y1/th);
return u1;
}
}
最終更新:2014年04月09日 10:33