31 lines
854 B
Text
31 lines
854 B
Text
function run_test(atom p, integer len, runs)
|
|
integer count = 0
|
|
for r=1 to runs do
|
|
bool v, pv = false
|
|
for l=1 to len do
|
|
v = rnd()<p
|
|
count += pv<v
|
|
pv = v
|
|
end for
|
|
end for
|
|
return count/runs/len
|
|
end function
|
|
|
|
procedure main()
|
|
printf(1,"Running 1000 tests each:\n")
|
|
printf(1," p n K p(1-p) delta\n")
|
|
printf(1,"--------------------------------------------\n")
|
|
for ip=1 to 10 by 2 do
|
|
atom p = ip/10,
|
|
p1p = p*(1-p)
|
|
integer n = 100
|
|
while n<=100000 do
|
|
atom K = run_test(p, n, 1000)
|
|
printf(1,"%.1f %6d %6.4f %6.4f %+7.4f (%+5.2f%%)\n",
|
|
{p, n, K, p1p, K-p1p, (K-p1p)/p1p*100})
|
|
n *= 10
|
|
end while
|
|
printf(1,"\n")
|
|
end for
|
|
end procedure
|
|
main()
|