选择游戏结果最佳机会的算法
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
我不擅长数学,我不完全确定这样排序的最佳方法是什么。基本上,时间应该被考虑到一定程度才能确定最佳顺序。
我会详细说明这个问题,因为问题似乎不清楚。这些值表示对特定项目(食品、木材等)的出价数量。我想根据用户在输入过程中获得的机会显示排序。例如,有些物品不会经常出价,并且由于物品是免费赠送的,他们仍然有机会赢得一些东西。
我的建议是:
使用Regex
获取时间
将时间转换为分钟(或秒,无论它是什么)
按转换时间排序
将您的值放在 List<T>
中,T
是 class
,int 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)
假设我们有多个值与剩余时间相结合,例如以下列表:
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
我不擅长数学,我不完全确定这样排序的最佳方法是什么。基本上,时间应该被考虑到一定程度才能确定最佳顺序。
我会详细说明这个问题,因为问题似乎不清楚。这些值表示对特定项目(食品、木材等)的出价数量。我想根据用户在输入过程中获得的机会显示排序。例如,有些物品不会经常出价,并且由于物品是免费赠送的,他们仍然有机会赢得一些东西。
我的建议是:
使用
Regex
获取时间将时间转换为分钟(或秒,无论它是什么)
按转换时间排序
将您的值放在 List<T>
中,T
是 class
,int 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)