两个小组地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是 ___个。
A.25 B.30 C.50 D.60
A.25 B.30 C.50 D.60
当然,任何一个了解估算方法的朋友都可以根据公式计算出最终的结果是50个,这没有什么问题。——但是,我在这里引用这个题目,是希望我们可以把学习这件事情通过类比变得更加有趣一点。
其实,如何估算一个系统中存在的缺陷数,我们的老祖宗早就有现成的方法了。不信,请看我在我们老祖宗的数学专著中找到的一个实践问题:“有一口鱼塘,不知道其中有多少条鱼,如何才能估算出池塘中鱼的数量?”(当然,原文不是这样,请原谅我一下子找不到出处,只好凭记忆用我的语言描述一下了)。我们老祖宗给出的答案是这样的:
对这个答案最简单的理解是: 假设第一次做了记号的鱼在鱼塘中是均匀分布的,第二次打捞上来的n条鱼中有p条是有记号的,则说明有记号的鱼的分布密度是p/n,鱼塘中一共有m条有记号的鱼,当然总的鱼数量就是 S = m / (p/n)了。
再回到我们的原始问题,很容易做一个类比,第一个小组发现了25个缺陷(相当于第一次打捞的鱼m),第二个小组发现了30个缺陷(相当于第二次打捞上来的鱼n),两者相同的是15个(相当于是p),所以答案是 50。
所以,从现在开始,不要再认为这个方法是什么深奥的方法——看看,我们的老祖宗都能熟练运用呢