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

Algorithm to pick best chance of game outcome

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

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

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

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

我不擅长数学,我不完全确定这样排序的最佳方法是什么。基本上,时间应该被考虑到一定程度才能确定最佳顺序。

我会详细说明这个问题,因为问题似乎不清楚。这些值表示对特定项目(食品、木材等)的出价数量。我想根据用户在输入过程中获得的机会显示排序。例如,有些物品不会经常出价,并且由于物品是免费赠送的,他们仍然有机会赢得一些东西。

我的建议是:

  1. 使用Regex获取时间

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

  3. 按转换时间排序

将您的值放在 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)