Как я могу изменить это (простое) уравнение для получения желаемого результата? - PullRequest
0 голосов
/ 12 июня 2011

У меня есть база данных из 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

Тем не менее, я хотел бы оценить эти элементы таким образом, который больше похож на синюю линию выше.Как мне изменить мою формулу для достижения этой цели?

Ответы [ 3 ]

2 голосов
/ 12 июня 2011

Попробуйте 1/sqrt(x) (т.е. pow(x, -1/2)) для начинающих.Если это все еще не достаточно медленно, попробуйте меньшую дробную мощность.

0 голосов
/ 12 июня 2011

Я не пробовал, но использую показатель степени вместо деления на 1000 базы 2.

ОБНОВЛЕНИЕ

value = 2 pow (n-rank)
0 голосов
/ 12 июня 2011

Почему бы вам не пойти с линейным?

value = n - rank

, где n это количество ваших предметов, т.е. 817.

...