這個週末我正在做一個項目,我需要用二項式分佈來測試一個事件的概率(y字符的x是給定隨機字節的字母數字的概率)。我的第一個解決方案是自己編寫測試,因爲它很簡單。導入什麼時候成爲正確的解決方案?
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
def binomial_prob(n,k,p):
bin_coeff = (factorial(n))/(factorial(k)*factorial(n-k))
return = bin_coeff * pow(p,k) * pow((1 - p),(n-k))
而且我用了。但是,SciPy包含一個完全可以做到的binom_test方法。但是,對於分發,這可能會顯着增加規模(需要SciPy和NumPy),並且這是一個相對簡單的測試。我想一個輔助問題是py2exe的智能程度。它只是從SciPy和NumPy或整個庫中導入我使用的模塊。我期望的只是我引用的模塊,但我想下一個問題是SciPy.stats依賴於多少個模塊。但是我離題了......所以我的問題是,我應該何時使用已經編寫的代碼,其代價遠遠超過我需要的,什麼時候應該編寫自己的實現?
(我標記這是蟒蛇,但我想它可能是一個更普遍的問題)
+1作爲重新發明輪子很少是一個好主意。 此外,使用這些庫提供更強大的功能。 F.ex.以上用於計算二項式係數的代碼執行太多的乘法。所以使用這個庫也可以提供更好的性能。 – Frank 2010-03-01 13:34:21
我對使用「永遠」和「永不」等詞語持謹慎態度:宇宙充滿了特殊情況。 – 2010-03-01 14:41:01
@Derrick Turk:我總是使用這些術語來強制人們嘗試並找到他們的實際邊緣案例。我永遠無法開始列舉所有可能的情況。說「總是」和「從不」是比較容易的。請注意,我實際上提供了一個邊緣情況,並且還說「始終」。 – 2010-03-01 14:47:54