RosettaCodeData/Task/Percolation-Mean-run-density/Phix/percolation-mean-run-density.phix
2019-09-12 10:33:56 -07:00

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()