アットウィキロゴ

package atom2;
 
public class atom{
 
 int[] x=new int[101];
 int[] y=new int[101];
 int[] dx=new int[101];
 int[] dy=new int[101];
 int s;   
 int avgx,avgy,sig;
 
  void makedata(){  
 
 
    for(s=1;s<101;s++){
    x[s]=1;
    y[s]=1;
    dx[s]=0;
    dy[s]=0;
    }
 
    int tr;
 
    for(tr=1;tr<55001;tr++){
 
    move();
 
    makeavg();
 
    makesig();
 
    spin();
    }
 
 
 
 
 
}
void move(){  
 
    int s,h;
 
for(s=1;s<101;s++){    
x[s]=x[s]+dx[s];
y[s]=y[s]+dy[s];
if(x[s]>300)x[s]=300;
if(y[s]>300)y[s]=300;
if(x[s]<0)x[s]=0;
if(y[s]<0)y[s]=0;
}      
 
 
}
void makeavg(){
 
int x1,y1;
x1=0;
y1=0;    
for(s=1;s<101;s++){    
x1=x1+x[s];
y1=y1+y[s];
}    
avgx=x1/100;
avgy=y1/100;
}
 
void spin(){
int s;
double p1,p2,p3;
for(s=1;s<101;s++){    
p1=spin_three(s);
p2=spin_two(s);
p3=spin_three(s);
p3=p1+p2+p3;
if(p3>1)p3=1;
if(Math.random()<p3)trial(s);
}
 
}
void trial(int s){
 
double p1,p2;    
 
p1=Math.random();
dx[s]=0;
if(p1<0.3)dx[s]=-1;
if(p1>0.7)dx[s]=1;
 
p1=Math.random();
dy[s]=0;
if(p1<0.3)dy[s]=-1;
if(p1>0.7)dy[s]=1;      
}
 
 
double spin_one(int s){  
double p1;
p1=1-0.1*avgmet(s);
if(p1<0)p1=0;    
return p1;
}
 
double spin_two(int s){  
double m1,p1;
m1=(double)(avgmet(s)/(sig+1));
p1=m1;
if(p1<0)p1=0;    
if(p1>1)p1=1;
return p1;
}
 
double spin_three(int sx){  
double m1,p1;
int s;
m1=0;
for(s=1;s<101;s++){
m1=met(sx,s);   
if(s==sx)m1=999;    
}
p1=0;
if(m1<5)p1=1;
return p1;
}
 
void makesig(){    
int x1,y1,m2;
double m1;
m1=0;
for(s=1;s<101;s++){
m1=m1+avgmet(s);
}
sig=(int)m1/100;
}
 
int avgmet(int s){    
int x1,y1;
double m1;
x1=x[s]-avgx;
y1=y[s]-avgy;  
m1=Math.sqrt(x1*x1+y1*y1);
return (int)m1;
}
 
int met(int s1,int s2){    
int x1,y1;
double m1;
x1=x[s1]-x[s2];
y1=y[s1]-y[s2];  
m1=Math.sqrt(x1*x1+y1*y1);
return (int)m1;
}
}
最終更新:2014年04月21日 12:44