2011-06-11 36 views
0

我有一个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

会线性拟合吗?这将是微不足道的 – Sai 2011-06-11 22:23:29

+0

'1/x'不是指数衰减,它是双曲衰变,不是吗? – Neil 2011-06-11 23:06:16

+0

@尼尔可能。 '数学!=我的专业'。 – Stephen 2011-06-11 23:08:03

回答

2

尝试1/sqrt(x)(即,pow(x, -1/2))为初学者。如果这还不够慢,请尝试使用更小的分数。

+0

工作就像一个魅力。谢谢! – Stephen 2011-06-11 23:03:13

0

你为什么不去线性?

value = n - rank 

其中n是你的项目数,即817

0

我还没有试过,但使用的指数,而不是除以1000基材2

的最新通报

value = 2 pow (n-rank) 
+0

你能否详细说明一下? – Stephen 2011-06-11 22:49:09

+0

@Stephen我已经更新了答案。 – Kamahire 2011-06-11 22:52:39

+0

2^-x实际上以比1/x更快的速度结束。 – duskwuff 2011-06-11 22:59:22

相关问题