PROGRAM random_walk2 ! random walk in two dimensions DIM x(500),y(500) LIBRARY "csgraphics" CALL initial(x(),y(),N,nwalkers,walker$) FOR step = 1 to N SET CURSOR 1,1 PRINT step CALL move(x(),y(),N,nwalkers,walker$) NEXT step END SUB initial(x(),y(),N,nwalkers,walker$) RANDOMIZE INPUT prompt "number of walkers = ": nwalkers INPUT prompt "total number of steps = ": N CLEAR CALL compute_aspect_ratio(N,xwin,ywin) SET WINDOW -xwin,xwin,-ywin,ywin ! place N particles at origin SET COLOR "red" LET r = 0.5 BOX AREA -r,r,-r,r BOX KEEP -r,r,-r,r in walker$ SET COLOR "black" FOR i = 1 to nwalkers LET x(i) = 0 LET y(i) = 0 NEXT i END SUB SUB move(x(),y(),N,nwalkers,walker$) FOR i = 1 to nwalkers CALL choice(x(),y(),i) BOX SHOW walker$ at x(i)-0.5,y(i)-0.5 NEXT i END SUB SUB choice(x(),y(),i) LET p = rnd IF p <= 0.25 then LET x(i) = x(i) + 1 ELSEIF p <= 0.5 then LET x(i) = x(i) - 1 ELSEIF p <= 0.75 then LET y(i) = y(i) - 1 ELSE LET y(i) = y(i) + 1 END IF END SUB