SemVer:相同种子的不同结果是否需要进行重大更改?

问题描述

假设我编写了一个遵循 Semantic Versioning Specification 的软件(用 R 语言,用于教学目的)。这是软件1.0.0版本的内容

funk <- function(x) {
    jitter(x)
}

哪个有效

set.seed(1)
print(funk(0))

收益

[1] -0.009379653

现在假设我将函数更改为:

funk <- function(x) {
    unrelated_random_stuff <- sample(1:10)
    jitter(x)
}

现在,set.seed(1); print(funk(0)) 收益

[1] -0.01176102

据 SemVer 称,这是否构成重大变化?即,如果我发布带有这些更改的软件,它应该是 2.0.0 吗?我倾向于这么认为,因为这在技术上改变了基于 1.0.0 版的脚本的结果,但我不确定这是否符合“破坏向后兼容性”,因为我们谈论的是随机生成的数字。

解决方法

如果您的客户倾向于依赖输出值,那么是的,您可能希望增加主要版本号。即使这是库代码,也可能有人将其用于模糊测试,并且产生可重现的结果至关重要,以便找到跟踪和修复错误,并确保修复不会在未来回归。>