GRIM测试的Python实现
grim的Python项目详细描述
严峻的考验
GRIM测试的实现,用python
Beta:正在工作
简介
这一方案基于希瑟斯和布朗在2016年的论文中首次强调的GRIM(与粒度相关的均值不一致性)测试。在
该测试利用一个简单的数值特性来确定整数值的平均值是否计算正确。在
您不需要原始整数值。您只需要mean和项目的数量(n)。在
四舍五入呢?在
通常,您正在测试的mean之前已经四舍五入了。您可以检查mean是否与特定的舍入类型一致,方法是将其作为参数包含在内。在
这个实现支持python3.8的decimal
implementation中当前找到的所有舍入类型。在
(它们是:圆形天花板、圆形向下、圆形地板、圆形一半向下、圆形一半均匀、圆形一半向上、圆形一半向上、圆形向上、圆形向上)
如果不包括四舍五入类型,则测试假设四舍五入为上。在
示例:这个mean,n和取整类型是否一致?
fromgrimimportmean_testerimportdecimal# mean is 11.09 and n is 21print(mean_tester.consistency_check('11.09','21',decimal.ROUND_HALF_UP))这_将_返回_ ^{<_cd2_>} , _因为_给定_一_个_包含_21_个_整数_的_列表_的_平均_值_可能_不_正确_ ( _并_使用_四_舍_五_入_法_ ) 。_
示例:这mean&;n使用任何舍入类型是否一致?
^{pr2}$这将返回:
{'ROUND_CEILING':False,'ROUND_DOWN':True,'ROUND_FLOOR':True,'ROUND_HALF_DOWN':False,'ROUND_HALF_EVEN':False,'ROUND_HALF_UP':False,'ROUND_UP':False,'ROUND_05UP':True}
如您所见,给定的平均值和n可能是一致的,使用一种舍入形式,而不是其他形式。在
您可以将数字作为字符串或小数传入,这样可以避免使用“float”时更容易出现的浮点精度问题。在
警告:
- 小心从浮点数创建小数,因为这些可能有浮点误差。 e、 g.:
importdecimalprint(decimal.Decimal(1.1))1.100000000000000088817841970012523233890533447265625
注意浮点数1.1的不精确表示是如何保留在十进制中的。最好从字符串中创建十进制数,例如:
importdecimalprint(decimal.Decimal('1.1'))1.1
许多工具都可以配置为在不解析的情况下将文本[可能是数字]读入字符串。有些工具,比如Webdriver,只返回一个字符串(这很有用!)在
有关这些问题在现代计算机语言中起源的更多信息read this。在
我怎样才能找到更多关于严峻考验的信息?在
詹姆斯·希瑟斯出版了articles,解释了这项技术是如何工作的,以及他如何用它揭露科学论文中的不一致之处。在
- 项目
标签: