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