单元测试概率分布有哪些好的做法?

时间:2012-03-29 23:11:20

标签: unit-testing probability

我正在一个项目中工作,我需要从头开始生成Poisson,Normal等变量。我知道Python中有实现。我习惯为几乎所有代码编写测试。

我想知道测试这些功能会有什么好处(如果有的话)?

3 个答案:

答案 0 :(得分:3)

我假设您的实现是建立在统一分布的伪编码生成器之上,您认为它足够好(不仅生成的值的分布,而且它们的顺序的随机性 - 请参阅Diehard tests )。

您应该构建两个直方图:第一个,基于您的实现生成的值。第二种,基于可信实现,或更好 - 基于给定分布的每个直方图列中的值计数的最大似然估计。

接下来,您可以使用紧密confidence interval验证所有直方图列的计数是否匹配。

答案 1 :(得分:1)

我在类似情况下所做的是:a)编写一个简单的直方图例程,绘制样本的直方图,并在几千个样本上运行以观察它; b)测试一些关键统计数据 - 标准偏差,平均值,......以确定它们的行为应该如此。

答案 2 :(得分:1)

您至少可以断言返回的值不是null并且在您期望的范围内。这仍然确保方法至少运行并且不会出错并且它们通过了基本的健全性检查。

您还可以收集许多值,并断言您接近预期的值分布,但这需要更多的工作。