出於純粹的興趣,我很好奇如何順序創建PI,以便在進程結果之後不再生成數字,而是允許數字在進程本身顯示時顯示產生。如果是這種情況,那麼這個數字可能會自己產生,我可以在先前看到的數字上實現垃圾回收,從而創建一個無限的系列。結果只是一系列Pi後每秒生成的一個數字。如何在Ruby中順序創建PIr
這裏是我發現通過互聯網絡篩選:
這一點,流行的計算機友好算法,該梅欽樣算法:
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)
這將會「顯示」在哪裏?在stdout上,也許每秒都會打印出新的一行(或者可能用curses更新同一行),或者在某些GUI上? – 2010-06-29 03:12:48
+1對PI的興趣:) – ldog 2010-06-29 06:55:18
這只是一個愛好項目,但我想製作一個蒸汽朋克藝術作品。使用麪包板和LCD顯示器,我想我可以想出一些東西。 :D – Trip 2010-06-29 16:11:29