32 lines
575 B
V
32 lines
575 B
V
import rand
|
|
import math { abs }
|
|
|
|
const nmax = 20
|
|
|
|
fn ana(n int) f64 {
|
|
return 1.0 // haven't started
|
|
}
|
|
|
|
fn avg(n int) f64 {
|
|
tests := 1e4
|
|
mut sum := 0
|
|
for t := 0; t < tests; t++ {
|
|
mut v := []bool{len: nmax, init: false}
|
|
for x := 0; !v[x]; x = rand.intn(n) or { 0 } {
|
|
v[x] = true
|
|
sum++
|
|
}
|
|
}
|
|
return f64(sum) / tests
|
|
}
|
|
|
|
fn main() {
|
|
println(' N average analytical (error)')
|
|
println('=== ========= ============ =========')
|
|
for n in 1 .. nmax + 1 {
|
|
a := avg(n)
|
|
b := ana(n)
|
|
println('${n:3} ${a:9.4f} ${b:12.4f} (${(abs(a - b) / b * 100):6.2f}%)')
|
|
}
|
|
}
|