我正在尝试从数组中查找与设置的整数最接近的整数,但是如果有多个整数,则想选择一个随机整数。

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

09-27 08:38