2

アイテムのスコア (賛成票/反対票に基づく) を取得し、時間の減衰を考慮した目に見えない基本的なスコアに基づいてそれらを並べ替える並べ替えアルゴリズムを作成したいと考えています。

分析哲学の側から来たので、私の数学的アルゴリズムは常に最高であるとは限りません。次の例で InverseTimeRelationship(currentItem.CreationDate) を解決する簡単でエレガントな方法は何ですか:

class Item()
{
  int upvotes;
  int downvotes;
  int SortScore;
  DateTime CreationDate;
}

var currentItem = GetSomeSpecificItemMethod();
int Score = currentItem.upvotes - currentItem.downvotes;
currentItem.SortScore = Score * InverseTimeRelationship(currentItem.CreationDate);
SortItemsBySortScore(Item[]);

InverseTimeRelationship(DateTime CreationDate)
{
  //Code To Write
}

1日後にSortScoreが少し低くなることが期待されますが、2〜3日後には投票数に関係なく、リスト/フロントページの上部から消えます.

4

2 に答える 2

2

多分:

e^-x (= 1/e^x)

この画像を参照してください(ウィキペディアから)。

コードは次のとおりです。

double InverseTimeRelationship(DateTime CreationDate)
{
    double HowFast = 0.1;
    return Math.Exp(-DateTime.Now.Subtract(CreationDate).Days * HowFast);
}

そして、あなたはそれを試すことができます:

Text = InverseTimeRelationship(DateTime.Today.AddDays(-3)).ToString();
于 2012-08-07T19:57:21.730 に答える
2

reddit が使用するアルゴリズムを見ることができます。それはあなたが望むもののようです。

于 2012-08-07T19:50:22.380 に答える