我试图了解如何仅将具有随机int rndIndx = random.Next(0, 6);
值的奇数或偶数索引分别搜索到the List<string> List = new List<string>();
例如列表的内容:
string 0 even
string 1 odd
string 2 even
string 3 odd
string 4 even
string 5 odd
我不确定当我在偶数索引中搜索随机值时,如果随机值为奇数,如何避免接受一个或另一个不跳过进程
另一种方式,如果我可以某种方式只搜索奇数或单独搜索列表本身的偶数索引。
如果我可以通过索引查找字符串,那么我可以使用条件rndIndx % 2 == 0
但是无论如何我可以跳过所需的过程如果结果不可接受条件
获得理想结果的最佳方法是,如果我能以某种方式避免在列表中搜索例外数量的索引,另外它可以优化性能,因为在Odd的情况下我没有任何理由寻找偶数到90000值,即使我可以除外,反之亦然。但我不知道该怎么做。
或者我需要使用while循环重复请求随机数,直到该值与搜索类型号不匹配,不确定是否更好的方式
答案 0 :(得分:3)
要随机获得奇数或偶数索引,您可以为范围[0,偶数/奇数项目生成一个随机数],然后使用一些数学运算将实际索引输入列表。假设第0个索引计为“偶数”,那么您应该能够将偶数索引的计数设为(list.Count + 1) / 2
,将奇数索引设为list.Count / 2
。例如:
var randomEven = Random.Next(0, (list.Count + 1) / 2;
var evenIndex = randomEven * 2;
var randomEvenElement = list[evenIndex];
var randomOdd = Random.Next(0, list.Count / 2);
var oddIndex = randomOdd * 2 + 1;
var randomOddElement = list[oddIndex];