c# - 如何在 array.orderby C# 上获取随机顺序

标签 c# arrays .net

我试图从一个数组中找到与一组整数最接近的整数,但如果有多个整数,我想随机选择一个。

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

关于c# - 如何在 array.orderby C# 上获取随机顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59200285/

相关文章:

c# - 如何从DataTable中随机抽取10行?

c - 冒泡排序函数中另一个数组的指针数组 (C)

PHP While 从数组循环

javascript - 如何在 Javascript 中从数组创建树(父子)对象

.net - 为什么 Math.Round(2.5) 返回 2 而不是 3?

c# - 控制台应用程序中常见的 .NET 与常见的 .NET Core 命名空间

c# - SendAsync何时完成?

c# - Asp.Net 尝试获取 ClientID

c# - 从 int 到短字符串的 2 路加密

c# - ASP.NET MVC 3 客户端验证