17 lines
402 B
Text
17 lines
402 B
Text
defmodule Random do
|
|
def randN(n) do
|
|
if :rand.uniform(n) == 1, do: 1, else: 0
|
|
end
|
|
def unbiased(n) do
|
|
{x, y} = {randN(n), randN(n)}
|
|
if x != y, do: x, else: unbiased(n)
|
|
end
|
|
end
|
|
|
|
IO.puts "N biased unbiased"
|
|
m = 10000
|
|
for n <- 3..6 do
|
|
xs = for _ <- 1..m, do: Random.randN(n)
|
|
ys = for _ <- 1..m, do: Random.unbiased(n)
|
|
IO.puts "#{n} #{Enum.sum(xs) / m} #{Enum.sum(ys) / m}"
|
|
end
|