Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
39
Task/Average-loop-length/Unicon/average-loop-length.unicon
Normal file
39
Task/Average-loop-length/Unicon/average-loop-length.unicon
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
link printf, factors
|
||||
|
||||
$define MAX_N 20
|
||||
$define TIMES 1000000
|
||||
$define RAND_MAX 2147483647
|
||||
|
||||
procedure expected(n)
|
||||
local sum := 0
|
||||
every i := 1 to n do
|
||||
sum +:= factorial(n) / (n ^ i) / factorial(n - i)
|
||||
return sum
|
||||
end
|
||||
|
||||
procedure test(n, times)
|
||||
local i, count := 0, x, bits
|
||||
every i := 0 to times-1 do {
|
||||
x := 1
|
||||
bits := 0
|
||||
while iand(bits, x)=0 do {
|
||||
count +:= 1
|
||||
bits := ior(bits, x)
|
||||
x := ishift(1 , ?n-1)
|
||||
}
|
||||
}
|
||||
return count
|
||||
end
|
||||
|
||||
procedure main(void)
|
||||
local n, cnt, avg, theory, diff
|
||||
write(" n\tavg\texp.\tdiff\n", repl("-",29))
|
||||
every n := 1 to MAX_N do {
|
||||
cnt := test(n, TIMES)
|
||||
avg := real(cnt) / TIMES
|
||||
theory := expected(n)
|
||||
diff := (avg / theory - 1) * 100
|
||||
printf("%2d %8.4r %8.4r %6.3r%%\n", n, avg, theory, diff)
|
||||
}
|
||||
return 0
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue