50 REM makes random walk in irregular box; in space i, j 55 REM horizontal boundaries are defined by i1(j) an i2(j) 60 REM m(i,j) records visits to each site 90 DEFLNG I-N: DIM m(22, 22), i1(22), i2(22) 100 i = 3: j = 4: SCREEN 4 195 REM initialize box boundaries 200 DATA 1 ,1 ,1 ,1 ,1 ,1 ,1 ,2, 3, 4, 5, 6, 7, 8, 8, 9 ,10, 9, 8, 7, 7, 6 205 FOR jp = 1 TO 22: READ i1(jp): NEXT jp 210 DATA 5 ,5 ,4 ,3, 4, 5, 6, 7, 8, 9 ,10,10,10,10,11,12,12,13,14,15,16, 17 220 FOR jp = 1 TO 22: READ i2(jp): NEXT jp 245 REM draw boundaries of the box 250 FOR jp = 1 TO 21: LINE (8 * i1(jp), 8 * jp)-(8 * i1(jp + 1), 8 * (jp + 1)): 260 LINE (8 * i2(jp), 8 * jp)-(8 * i2(jp + 1), 8 * (jp + 1)): NEXT jp 290 kk = 10000 295 REM big loop for making random steps 300 FOR k = kk TO 2 * kk: kr = 4 * RND + .5: ip = i: jp = j 305 REM take a step based on random number kr from 1 to 4 310 IF kr = 1 THEN ip = i + 1: GOTO 400 320 IF kr = 2 THEN ip = i - 1: GOTO 400 330 IF kr = 3 THEN jp = jp + 1: GOTO 400 340 IF kr = 4 THEN jp = jp - 1: GOTO 400 400 REM reject new point (ip, jp) if it is illegal 410 IF jp = 0 OR jp = 23 THEN 500 420 IF ip = i1(jp) OR ip = i2(jp) THEN 500 450 i = ip: j = jp 495 REM increment m for the new step in the walk: make a dot at that site 500 m(i, j) = m(i, j) + 1: PSET (8 * i + ((m(i, j) / 8) AND 7), 8 * j + (m(i, j) AND 7)) 600 NEXT k: kk = 2 * kk 1001 REM analyze m(i,j) 1005 mm = 0: ko = 0: ms = 0: mx = 0: mn = 1E+09 1010 FOR ip = 1 TO 22: FOR jp = 1 TO 22: IF m(ip, jp) = 0 THEN 1030 1020 ko = ko + 1: mm = mm + m(ip, jp): ms = ms + m(ip, jp) ^ 2: IF m(ip, jp) > mx THEN mx = m(ip, jp) 1025 IF m(ip, jp) < mn THEN mn = m(ip, jp) 1030 NEXT jp: NEXT ip 1100 mm = mm / ko: ms = ms / ko: sd = SQR(ms - mm ^ 2) / mm 1195 REM mm is mean; mn is smallest m; mx is largest m; sd is std deviation. 1200 PRINT k; mm; mn; mx; sd 2000 GOTO 300