我正在尝试从数组中查找与设置的整数最接近的整数,但是如果有多个整数,则想选择一个随机整数。var nearestScore = scoreArray.OrderBy(x => Math.Abs((long)x - realScore)).First();
除了使用First()
外,我不知道其他任何方式。
我也尝试过
var r = new random()
var nearestScore = scoreArray.OrderBy(x => Math.Abs((long)x - realScore)).ToArray();
return nearestScore[r.next(0, nearestScore.Length - 1)]
谢谢。
最佳答案
您可以为此使用GroupBy()
。它有点笨拙,但对于小型阵列很简单。
Random rnd = new Random();
var nearestScore = scoreArray
.Select(x => new { Num = x, Delta = Math.Abs((long)x - realScore)) })
.OrderBy(a => a.Delta)
.GroupBy(a => a.Delta)
.First()
.OrderBy(a => rnd.Next())
.Select(a => a.Num)
.First();