Benford's law: Difference between revisions

Added Elixir
(Added Elixir)
Line 629:
abs((f / double(N)) - expected[i]) * 100);
}</lang>
 
=={{header|Elixir}}==
<lang elixir>defmodule Benfords_law do
def distribution(n), do: :math.log10( 1 + (1 / n) )
def task(total \\ 1000) do
IO.puts "Digit Actual Benfords expected"
fib(total)
|> Enum.group_by(fn i -> hd(to_char_list(i)) end)
|> Enum.map(fn {key,list} -> {key - ?0, length(list)} end)
|> Enum.sort
|> Enum.each(fn {x,len} -> IO.puts "#{x} #{len / total} #{distribution(x)}" end)
end
defp fib(n) do # suppresses zero
Stream.unfold({1,1}, fn {a,b} -> {a,{b,a+b}} end) |> Enum.take(n)
end
end
 
Benfords_law.task</lang>
 
{{out}}
<pre>
Digit Actual Benfords expected
1 0.301 0.3010299956639812
2 0.177 0.17609125905568124
3 0.125 0.12493873660829993
4 0.096 0.09691001300805642
5 0.08 0.07918124604762482
6 0.067 0.06694678963061322
7 0.056 0.05799194697768673
8 0.053 0.05115252244738129
9 0.045 0.04575749056067514
</pre>
 
=={{header|Erlang}}==
Anonymous user