Average loop length: Difference between revisions

→‎{{header|Lua}}: added Lua solution
(Average loop length en FreeBasic)
(→‎{{header|Lua}}: added Lua solution)
Line 1,368:
20 5.2792 5.29358459 -0.2717%
</pre>
 
=={{header|Lua}}==
<lang lua>function average(n, reps)
local count = 0
for r = 1, reps do
local f = {}
for i = 1, n do f[i] = math.random(n) end
local seen, x = {}, 1
while not seen[x] do
seen[x], x, count = true, f[x], count+1
end
end
return count / reps
end
 
function analytical(n)
local s, t = 1, 1
for i = n-1, 1, -1 do t=t*i/n s=s+t end
return s
end
 
print(" N average analytical (error)")
print("=== ========= ============ =========")
for n = 1, 20 do
local avg, ana = average(n, 1e6), analytical(n)
local err = (avg-ana) / ana * 100
print(string.format("%3d %9.4f %12.4f (%6.3f%%)", n, avg, ana, err))
end</lang>
{{out}}
<pre> N average analytical (error)
=== ========= ============ =========
1 1.0000 1.0000 ( 0.000%)
2 1.5002 1.5000 ( 0.014%)
3 1.8896 1.8889 ( 0.037%)
4 2.2176 2.2188 (-0.054%)
5 2.5094 2.5104 (-0.038%)
6 2.7732 2.7747 (-0.054%)
7 3.0186 3.0181 ( 0.016%)
8 3.2440 3.2450 (-0.031%)
9 3.4554 3.4583 (-0.085%)
10 3.6625 3.6602 ( 0.063%)
11 3.8534 3.8524 ( 0.026%)
12 4.0354 4.0361 (-0.016%)
13 4.2111 4.2123 (-0.031%)
14 4.3839 4.3820 ( 0.043%)
15 4.5453 4.5458 (-0.012%)
16 4.7054 4.7043 ( 0.024%)
17 4.8596 4.8579 ( 0.035%)
18 5.0099 5.0071 ( 0.056%)
19 5.1553 5.1522 ( 0.060%)
20 5.2901 5.2936 (-0.066%)</pre>
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
Anonymous user