选择最佳游戏结果机会的算法

时间:2015-02-03 08:59:18

标签: c# math

我们假设我们有多个值与剩余时间相结合,例如以下列表:

220 - 1 minute left
150 - 2 minutes left
600 - 13 minutes left
180 - 2 hours left
540 - 1 hour left
400 - 1.5 hours left

剩下的时间很少超过两个小时,但理论上可以是任何东西。所以,让我们说当时剩下的最长时间是未知的。这些值随时间或多或少地增加。目标是按时间基于最低值对列表进行排序。在示例列表中,我希望结果接近:

150 - 2 minutes left
220 - 1 minute left
180 - 2 hours left
400 - 1.5 hours left
540 - 1 hour left
600 - 13 minutes left

我不擅长数学,而且我不完全确定将这种方式排序的最佳方法是什么。基本上,应该在一定程度上考虑时间,以确定最佳顺序。

我将详细阐述这个问题,因为似乎问题不清楚。这些值代表某个项目(食品,木材等)的多个出价。我想基于用户在进入期间获得的机会来显示排序。例如,某些商品经常无法获得出价,因为这些商品是免费赠送的,所以仍然有机会赢得一些商品。

2 个答案:

答案 0 :(得分:1)

将您的值放在List<T> Tclassint Score属性和TimeSpan TimeLeft属性。

然后您可以执行以下操作:

var sortedList = originalList.OrderBy(x => x.Score + x.TimeLeft.TotalMinutes).ToList();

根据您的示例(括号中的订单值):

150 - 2 minutes left (152)
220 - 1 minute left (221)
180 - 2 hours left (300)
400 - 1.5 hours left (490)
540 - 1 hour left (600)
600 - 13 minutes left (613)

答案 1 :(得分:0)

我的建议是:

  1. 使用Regex获取时间

  2. 将时间转换为分钟(或秒,无论它是什么)

  3. 按转换时间排序