Help:=proc(): print(`Drunk2(n), Polya(n,K) `):end: #random walk of length n Drunk2:=proc(n) local w,i,ra,pt,pt1,die1: pt:=[0,0]: w:=[]: ra:=rand(1..4): for i from 1 to n do die1:=ra(): if die1=1 then pt1:=[pt[1]+1,pt[2]]: elif die1=2 then pt1:=[pt[1]-1,pt[2]]: elif die1=3 then pt1:=[pt[1],pt[2]+1]: else pt1:=[pt[1],pt[2]-1]: fi: w:=[op(w),pt1]: pt:=pt1: od: w: end: #Polya(n,K): out of K randomly-generated #2-dim walks how many revisit the origin Polya:=proc(n,K) local co,i: co:=0: for i from 1 to K do if member([0,0], Drunk2(n)) then co:=co+1: fi: od: co/K: end: