本周末我正在研究一个项目,我需要使用二项分布来测试事件的概率(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))
Run Code Online (Sandbox Code Playgroud)
我用过它.但是,SciPy包含了一个binom_test方法.但是,对于分发,这可能会显着增加尺寸(需要SciPy和NumPy),这是一个相对简单的测试.我想一个辅助问题是py2exe的智能程度.它只是导入我使用的模块,从SciPy和NumPy,或整个库.我只期待我参考的模块,但我想下一个问题是SciPy.stats所依赖的模块数量.但是我离题了...所以我的问题是,我应该何时使用已经编写的代码,其代价远远超出我的需要,何时我应该编写自己的实现?
(我把它标记为python,但我想这可能是一个更普遍的问题)