Benford's law: Difference between revisions
m
→{{header|Julia}}
Line 1,979:
χ² = 3204.8072</pre>
=={{header|Julia}}==
<syntaxhighlight lang="julia">#
struct Fib end▼
Base.iterate(::Fib, (a, b) = (big(0), big(1))) = b, (b, a + b)▼
fibs(n) = Iterators.take(Fib(), n)▼
function benford(
counts = zeros(Int, 9)▼
firstdigit(n) = parse(Int, first(string(n)))
foreach(
counts ./ sum(counts)
end
▲P(d) = log10(1 + 1/d)
observed = benford(sample) .* 100
expected = P.(1:9) .* 100
table = Real[1:9 observed expected]
using Plots
plot([observed expected]; title = "Benford's Law",
seriestype = [:bar :line], linewidth = [0 5],
xticks = 1:9, xlabel = "first digit", ylabel = "frequency %",
label = ["1000 Fibonacci numbers" "P(d)=log10(1+1/d)"])
using Printf
println("Benford's Law\nFrequency of first digit\nin 1000 Fibonacci numbers")
println("digit observed expected")
foreach(i -> @printf("%3d%9.2f%%%9.2f%%\n", table[i,:]...), 1:9)</syntaxhighlight>
{{Out}}
<pre>
Frequency of first digit
in 1000 Fibonacci numbers
digit observed expected
6 6.70% 6.69%
7 5.60% 5.80%
8 5.30% 5.12%
9 4.50% 4.58%</pre>
=={{header|Kotlin}}==
|