22 lines
468 B
Text
22 lines
468 B
Text
func randN (n) {
|
|
n.rand / (n-1) -> int
|
|
}
|
|
|
|
func unbiased(n) {
|
|
var n1 = nil
|
|
do { n1 = randN(n) } while (n1 == randN(n))
|
|
return n1
|
|
}
|
|
|
|
var iterations = 1000
|
|
|
|
for n in (3..6) {
|
|
var raw = []
|
|
var fixed = []
|
|
iterations.times {
|
|
raw[ randN(n) ] := 0 ++
|
|
fixed[ unbiased(n) ] := 0 ++
|
|
}
|
|
printf("N=%d randN: %s, %4.1f%% unbiased: %s, %4.1f%%\n",
|
|
n, [raw, fixed].map {|a| (a.dump, a[1] * 100 / iterations) }...)
|
|
}
|