純粋な興味から、プロセスの結果の後に数値が生成されるのではなく、プロセス自体が生成されているときに数値が表示されるように、PI を順次作成する方法に興味があります。この場合、数値はそれ自体で生成される可能性があり、以前に見た数値にガベージ コレクションを実装して、無限級数を作成することができます。結果は、一連の Pi に続く毎秒生成される数値です。
インターネットをふるいにかけたときに見つけたものは次のとおりです。
これは、コンピューターに適した人気のあるアルゴリズムである The Machin-like Algorithm です。
def arccot(x, unity)
xpow = unity / x
n = 1
sign = 1
sum = 0
loop do
term = xpow / n
break if term == 0
sum += sign * (xpow/n)
xpow /= x*x
n += 2
sign = -sign
end
sum
end
def calc_pi(digits = 10000)
fudge = 10
unity = 10**(digits+fudge)
pi = 4*(4*arccot(5, unity) - arccot(239, unity))
pi / (10**fudge)
end
digits = (ARGV[0] || 10000).to_i
p calc_pi(digits)