【问题标题】:Lookup only for odd or even numbers into the list仅在列表中查找奇数或偶数
【发布时间】:2017-01-18 06:27:08
【问题描述】:

我试图了解如何单独搜索具有随机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 但无论如何,如果结果不符合条件,我可以跳过所需的过程

获得所需结果的最佳方法是,如果我能以某种方式避免在列表中搜索例外数量的索引,另外它可以优化性能,因为在奇数的情况下,我没有任何理由寻找偶数成 90000 个值,即使我可以排除它,反之亦然。但我不知道该怎么做。

或者我需要使用while循环重复请求随机数,直到该值与搜索类型号不匹配,不确定是否更好

【问题讨论】:

    标签: c# list random


    【解决方案1】:

    要随机获取奇数或偶数索引,您可以为范围 [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];
    

    【讨论】:

    • 您好,我将把这个解决方案标记为答案,因为我只得到需要的随机数类型,不需要避免进入列表,以防随机数。但也很有趣,如何使用字符串 Equals 值仅搜索奇数或偶数,避免不需要的数字类型,而不检查每个数字的条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2016-04-21
    • 2017-02-06
    • 1970-01-01
    相关资源
    最近更新 更多