September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
27
Task/Average-loop-length/Julia/average-loop-length.julia
Normal file
27
Task/Average-loop-length/Julia/average-loop-length.julia
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Version 5.2
|
||||
analytical(n::Integer) = sum(factorial(n) / big(n) ^ i / factorial(n - i) for i = 1:n)
|
||||
|
||||
function test(n::Integer, times::Integer = 1000000)
|
||||
c = 0
|
||||
for i = range(0, times)
|
||||
x, bits = 1, 0
|
||||
while (bits & x) == 0
|
||||
c += 1
|
||||
bits |= x
|
||||
x = 1 << rand(0:(n - 1))
|
||||
end
|
||||
end
|
||||
return c / times
|
||||
end
|
||||
|
||||
function main(n::Integer)
|
||||
println(" n\tavg\texp.\tdiff\n-------------------------------")
|
||||
for n in 1:n
|
||||
avg = test(n)
|
||||
theory = analytical(n)
|
||||
diff = (avg / theory - 1) * 100
|
||||
@printf(STDOUT, "%2d %8.4f %8.4f %6.3f%%\n", n, avg, theory, diff)
|
||||
end
|
||||
end
|
||||
|
||||
main(20)
|
||||
Loading…
Add table
Add a link
Reference in a new issue