34 lines
713 B
Plaintext
34 lines
713 B
Plaintext
@% = &2040A
|
|
MAX_N = 20
|
|
TIMES = 1000000
|
|
|
|
FOR n = 1 TO MAX_N
|
|
avg = FNtest(n, TIMES)
|
|
theory = FNanalytical(n)
|
|
diff = (avg / theory - 1) * 100
|
|
PRINT STR$(n), avg, theory, diff "%"
|
|
NEXT
|
|
END
|
|
|
|
DEF FNanalytical(n)
|
|
LOCAL i, s
|
|
FOR i = 1 TO n
|
|
s += FNfactorial(n) / n^i / FNfactorial(n-i)
|
|
NEXT
|
|
= s
|
|
|
|
DEF FNtest(n, times)
|
|
LOCAL i, b, c, x
|
|
FOR i = 1 TO times
|
|
x = 1 : b = 0
|
|
WHILE (b AND x) = 0
|
|
c += 1
|
|
b OR= x
|
|
x = 1 << (RND(n) - 1)
|
|
ENDWHILE
|
|
NEXT
|
|
= c / times
|
|
|
|
DEF FNfactorial(n)
|
|
IF n=1 OR n=0 THEN =1 ELSE = n * FNfactorial(n-1)
|