GRIM测试的Python实现

grim的Python项目详细描述


严峻的考验

GRIM测试的实现,用python

Beta:正在工作

简介

这一方案基于希瑟斯和布朗在2016年的论文中首次强调的GRIM(与粒度相关的均值不一致性)测试。在

该测试利用一个简单的数值特性来确定整数值的平均值是否计算正确。在

您不需要原始整数值。您只需要mean和项目的数量(n)。在

四舍五入呢?在

通常,您正在测试的mean之前已经四舍五入了。您可以检查mean是否与特定的舍入类型一致,方法是将其作为参数包含在内。在

这个实现支持python3.8的decimalimplementation中当前找到的所有舍入类型。在

(它们是:圆形天花板、圆形向下、圆形地板、圆形一半向下、圆形一半均匀、圆形一半向上、圆形一半向上、圆形向上、圆形向上)

如果不包括四舍五入类型,则测试假设四舍五入为上。在

示例:这个meann和取整类型是否一致?

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”时更容易出现的浮点精度问题。在

警告:

  1. 小心从浮点数创建小数,因为这些可能有浮点误差。 e、 g.:
importdecimalprint(decimal.Decimal(1.1))1.100000000000000088817841970012523233890533447265625

注意浮点数1.1的不精确表示是如何保留在十进制中的。最好从字符串中创建十进制数,例如:

importdecimalprint(decimal.Decimal('1.1'))1.1

许多工具都可以配置为在不解析的情况下将文本[可能是数字]读入字符串。有些工具,比如Webdriver,只返回一个字符串(这很有用!)在

有关这些问题在现代计算机语言中起源的更多信息read this。在

我怎样才能找到更多关于严峻考验的信息?在

詹姆斯·希瑟斯出版了articles,解释了这项技术是如何工作的,以及他如何用它揭露科学论文中的不一致之处。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾