fastfunc average n reps . len f[] n len seen[] n for r to reps for i = 1 to n f[i] = random 1 n seen[i] = 0 . x = 1 while seen[x] = 0 seen[x] = 1 x = f[x] count += 1 . . return count / reps . fastfunc analytical n . s = 1 t = 1 for i = n - 1 downto 1 t = t * i / n s += t . return s . print " N average analytical (error)" print "=== ======= ========== =======" for n to 20 avg = average n 1e6 ana = analytical n err = (avg - ana) / ana * 100 numfmt 2 0 write n numfmt 9 4 print avg & ana & err & "%" .