我有一个包含817个项目的数据库,每个项目的“等级”为1到817(数字越小,“项目越好”)。该等级基于许多表明质量的因素。
现在,我需要为这些项目分配一个“值”,其中等级1的项目的估值最高,值随着等级(非线性)而减少。
最简单的首次尝试是简单地选择任意基数(100,000)并除以等级:
$value = 100000 / $rank;
/**
* Rank : Value
* 1 : 100,000
* 2 : 50,000
* 3 : 33,333
* etc.
*/
这会产生指数衰减,如此图像中的红线所示:
graph http://i51.tinypic.com/117w9vr.png
但是,我希望以一种看起来更像上面蓝线的方式来评价这些物品。我怎样才能改变我的公式来实现这个目标?
答案 0 :(得分:2)
首先尝试1/sqrt(x)
(即pow(x, -1/2)
)。如果仍然不够慢,请尝试较小的分数功率。
答案 1 :(得分:0)
你为什么不选择线性?
value = n - rank
其中n
是您的商品数量,即817。
答案 2 :(得分:0)
我没有尝试过但是使用指数而不是除以1000的基数2.
<强>更新强>
value = 2 pow (n-rank)