gpt4 book ai didi

c# - 数组中值的随机索引

转载 作者:行者123 更新时间:2023-12-03 19:41:44 25 4
gpt4 key购买 nike

在我的程序中,我有一个函数可以找到最接近整数的索引。

var indexWinnder = Array.IndexOf(scoreArray, nearestScore)

但是 Array.IndexOf 的工作方式是找到第一个匹配项并使用它。我想要一个随机索引。不是第一个。不是最后一个。我有什么办法可以做到这一点吗?

最佳答案

没有内置方法,但您可以使用自己的方法。我的示例使用了可能实现的通用版本。

class Program
{
static void Main(string[] args)
{
var arr = new int[] { 1, 2, 3, 1, 1, 5, 2, 6, 1 };

var randomIndex = RandomIndexOf(arr, 1);

Console.WriteLine(randomIndex);
Console.ReadKey();
}

static int RandomIndexOf<T>(ICollection<T> arr, T element)
{
var indexes = arr.Select((x, i) => new { Element = x, Index = i })
.Where(x => element.Equals(x.Element))
.Select(x => x.Index)
.ToList();

if (indexes.Count == 0) // there is no matching elements
{
return -1;
}

var rand = new Random();
var randomIndex = rand.Next(0, indexes.Count);

return indexes[randomIndex];
}
}

关于c# - 数组中值的随机索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60439462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com