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代码同样可以接受 - 我宁愿只是理解如何去做。
答案 0 :(得分:1)
那么问题是什么?
使用以下简单公式:
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&gt; minCount):
currentWorth = exp(minCount / currentCount - 1)
假设:
t = 1 - minCount / currentCount > 0
我们将:
(currentWorth = exp(-t) = 1 / exp(t)) < 1