41 lines
730 B
Text
41 lines
730 B
Text
n = 1000
|
|
dim actual(n)
|
|
|
|
for nr = 1 to n
|
|
num$ = str$(fibonacci(nr))
|
|
j = val(left$(num$,1))
|
|
actual(j) = actual(j) + 1
|
|
next
|
|
|
|
print "First 1000 Fibonacci numbers"
|
|
print "Digit ", "Actual freq ", "Expected freq"
|
|
for i = 1 to 9
|
|
freq = frequency(i)*100
|
|
print i using("###"), " ", (actual(i)/10) using("##.###"), " ", freq using("##.###")
|
|
next
|
|
end
|
|
|
|
sub frequency(n)
|
|
return (log10(n+1) - log10(n))
|
|
end sub
|
|
|
|
sub log10(n)
|
|
return log(n) / log(10)
|
|
end sub
|
|
|
|
sub fibonacci(n)
|
|
local n1, n2, k, sum
|
|
|
|
n1 = 0
|
|
n2 = 1
|
|
for k = 1 to abs(n)
|
|
sum = n1 + n2
|
|
n1 = n2
|
|
n2 = sum
|
|
next k
|
|
if n < 0 then
|
|
return n1 * ((-1) ^ ((-n) + 1))
|
|
else
|
|
return n1
|
|
end if
|
|
end sub
|