IMPLICIT NONE REAL*8 ran, a, e, p, w, g INTEGER i, iseed, ntrial, j, k, s(0:32, 0:32), m, l write(6,*) 'n?' read(5,*) ntrial w=1.5 iseed=106 open(unit = 10, file = '80.prn', $ form = 'formatted') m = 961 do 20 i=0,32 do 10 j=0,32 s(i, j) = 1 10 continue 20 continue do 40 l=1,ntrial do 30 k=1,962 i=int(ran(iseed)*31.0)+1.0 j=int(ran(iseed)*31.0)+1.0 e=-s(i, j)*(s(i, j-1)+s(i, j+1)+s(i-1, j)+s(i+1, j)) if (e.ge.0) goto 23 p=exp(e/w) a=ran(iseed) if (p.lt.a) goto 25 23 continue s(i, j)=-s(i, j) m=m+s(i, j) s(32, j)=s(1, j) s(0, j)=s(31, j) s(i, 32)=s(i, 0) s(i, 0)=s(i, 31) s(32, 32)=s(1, 1) s(32, 0)=s(1, 31) s(0, 0)=s(31, 31) s(0, 32)=s(31, 1) 25 continue 30 continue g=(2*(m/(961.0))-1.0) write(6,*) l, ' ', g, ' ', m g = 0 40 continue do 60 i=0,32 do 50 j=0,32 write(10,*) s(i, j) 50 continue write(10,*) ' ' write(10,*) ' ' write(10,*) ' ' 60 continue 9999 stop end function ran(iseed) iseed=iseed*48828125 if(iseed.le.0) iseed=(iseed+2147483647)+1 ran=float(iseed)/2147483647 return end