29 lines
657 B
Plaintext
29 lines
657 B
Plaintext
F ffactorial(n)
|
||
V result = 1.0
|
||
L(i) 2..n
|
||
result *= i
|
||
R result
|
||
|
||
V MAX_N = 20
|
||
V TIMES = 1000000
|
||
|
||
F analytical(n)
|
||
R sum((1..n).map(i -> ffactorial(@n) / pow(Float(@n), Float(i)) / ffactorial(@n - i)))
|
||
|
||
F test(n, times)
|
||
V count = 0
|
||
L(i) 0 .< times
|
||
V (x, bits) = (1, 0)
|
||
L (bits [&] x) == 0
|
||
count++
|
||
bits [|]= x
|
||
x = 1 << random:(n)
|
||
R Float(count) / times
|
||
|
||
print(" n avg exp. diff\n-------------------------------")
|
||
L(n) 1 .. MAX_N
|
||
V avg = test(n, TIMES)
|
||
V theory = analytical(n)
|
||
V diff = (avg / theory - 1) * 100
|
||
print(‘#2 #3.4 #3.4 #2.3%’.format(n, avg, theory, diff))
|