我试着用javascript编写这个函数:http://uggedal.com/reddit.cf.algorithm.png:
function getRating(t,u,d){
var x = u-d;
if(x > 0)
y = 1
else if(x == 0)
y = 0
else if(x < 0)
y = -1
var z = Math.max(1,Math.abs(x));
return Math.log(z)/Math.log(10) + y*t/45000;
}T=传递给函数的第一个post和此post之间的时间(以秒为单位)u= upvotes d= downvotes
console.log(getRating(50000, 25, 25)); //0但它总是返回零。我错过了什么吗?谢谢
编辑:已更新
发布于 2011-12-13 03:21:49
对于示例输入,结果是0,所以这是正确的。对于其他输入,它是否也返回0?
有一件事,根据链接,你应该设置
z = Math.max(1,Math.abs(x))发布于 2011-12-13 03:17:54
在这种情况下,z将为1,log(1)为0。此外,"y“将是0,因为u == d。
正如在问题的注释中提到的,并且从链接的.png文件中可以清楚地看到,您需要从"x“和1的绝对值的最大值设置"z”。当"u“和"d”相同时,无论如何它都将始终为零。
https://stackoverflow.com/questions/8479520
复制相似问题