var minCount = 10; // Used as 0, anything below 10 uses will be ignored
User hasMany Attributes
Attribute (id, value, count, worth)
// Count - number of users who associate with this attribute
// Worth - float 0.1 (or a better non-zero number?) to 1计数为minCount的属性值为1,计数最高的属性的值最低。使用较少的属性值更高->值越低,价值越高。
价值之差应该是指数级的:
现在我将使用php,但是psuedo代码也是可以接受的--我只想知道如何做到这一点。
发布于 2014-02-16 14:49:41
那有什么问题吗?
使用以下简单公式:
currentWorth = exp(minCount / currentCount - 1)其中:exp -e指数;currentCount -当前属性计数;minCount -最小属性计数。
简要说明:
首先考虑没有指数应用的公式:
currentWorth = minCount / currentCount对于具有最小计数的属性(currentCount = minCount):
currentWorth = minCount / minCount = 1对于具有任何其他计数(明显大于minCount)的属性:
(currentWorth = minCount / currentCount) < 1现在让我们应用指数定律:
currentWorth = exp(minCount / currentCount - 1)对于具有最小计数的属性(currentCount = minCount):
currentWorth = exp(minCount / minCount - 1) = exp(1 - 1) = exp(0) = 1对于具有任何其他计数的属性(currentCount > minCount):
currentWorth = exp(minCount / currentCount - 1)假设:
t = 1 - minCount / currentCount > 0我们会有:
(currentWorth = exp(-t) = 1 / exp(t)) < 1https://stackoverflow.com/questions/21812296
复制相似问题