C# 随时间指数衰减的值

C# 随时间指数衰减的值,c#,algorithm,math,datetime,C#,Algorithm,Math,Datetime,我想创建一个排序算法,该算法采用项目分数(基于向上投票/向下投票),并基于不可见的基础分数(考虑时间衰减)对其进行排序 从分析哲学的角度来看,我的数学算法并不总是最好的。在以下示例中,解决反向关系(currentItem.CreationDate)的简单优雅方法是什么: class Item() { int upvotes; int downvotes; int SortScore; DateTime CreationDate; } var currentItem = GetS

我想创建一个排序算法,该算法采用项目分数(基于向上投票/向下投票),并基于不可见的基础分数(考虑时间衰减)对其进行排序

从分析哲学的角度来看,我的数学算法并不总是最好的。在以下示例中,解决反向关系(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
}
希望在一天之后,SortCore会稍微低一点,但是在2-3天之后,不管它有多少票,它都会从列表/头版的顶部消失。

你可以看看。这似乎是你想要的。

你可以看看。这似乎是你想要的。

也许:

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();
也许:

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();

好吧,我首先以
常量/(物品的年龄)
作为基线。您可以创建衰减更快、更慢或具有其他更复杂形状的东西,但一个简单的
1/age
可以为您提供简单的衰减。而且,这不是一个真正的编程问题,所以这里不讨论这个主题。如果您有一个算法,并且想知道如何实现它,那么这将是一个主题。好吧,我将以
常量/(项目年龄)
作为基线开始。您可以创建衰减更快、更慢或具有其他更复杂形状的东西,但一个简单的
1/age
可以为您提供简单的衰减。而且,这不是一个真正的编程问题,所以这里不讨论这个主题。若你们有一个算法,并且想知道如何实现它,那个么它将是关于这个主题的。我喜欢Reddit,从来不知道它就在那个里。从Pyrex到C#需要多少翻译?@Wesley:如果我是你,我会在链接页面上获取python实现并移植它。它非常简短。:)@韦斯利,我相信这不会那么难搞清楚吧?如果您无法从代码中找出它,请查看代码与实际方程的关系。@Wesley我建议尝试一下:)始终是最好的方法,如果您认为它不起作用或想检查它是否正确,请向我们展示您的代码,我们无法让您放心或进一步帮助您。最后,最好的学习方法是尝试:)。@Wesley:要将日期时间转换为时间戳,可以使用。除此之外,你应该没事我喜欢Reddit,从来都不知道这是真的。从Pyrex到C#需要多少翻译?@Wesley:如果我是你,我会在链接页面上获取python实现并移植它。它非常简短。:)@韦斯利,我相信这不会那么难搞清楚吧?如果您无法从代码中找出它,请查看代码与实际方程的关系。@Wesley我建议尝试一下:)始终是最好的方法,如果您认为它不起作用或想检查它是否正确,请向我们展示您的代码,我们无法让您放心或进一步帮助您。最后,最好的学习方法是尝试:)。@Wesley:要将日期时间转换为时间戳,可以使用。除此之外,你应该没事我们将尝试这两种解决方案。现在,Reddit代码看起来更全面,但这更容易实现,而且更接近我最初的问题。@Wesley没问题。祝你好运我们将尝试这两种解决方案。现在,Reddit代码看起来更全面,但这更容易实现,而且更接近我最初的问题。@Wesley没问题。祝你好运