【问题标题】:Find multiple numbers in array在数组中查找多个数字
【发布时间】:2020-10-25 22:02:17
【问题描述】:

我需要找到数组中包含的多个数字,然后随机选择一个。 这是我的代码:

 var get = JsonConvert.DeserializeObject<List<int>>(json);
 var number = get.Where(r => r = 1).FirstOrDefault();

 if (number = 1)
 {
     //DO SOMETHING

 }

如何从另一个数组中的数组列表中随机选择一个数字?

例如:

array1 = [1, 2, 4, 5, 6, 7, 9, 10]
array2 = [3, 4, 8, 10]

如何检查 array2 的数字是否包含在 array1 中并仅从现有列表中随机选择一个数字?

在示例中,检查结果为 [4, 10],因为 3 和 8 不在 array2 中,那么我想随机选择 4 或 10,它们包含在 array1 和 array2 中。

这些只是一个例子,而不是实际数字。

【问题讨论】:

    标签: c# arrays random


    【解决方案1】:

    你想使用 set intersect:

    int[] arr1 = new int[] { 1, 2, 4, 5, 6, 7, 9, 10 };
    int[] arr2 = new int[] { 3, 4, 8, 10 };
    
    var intersect = arr1.Intersect(arr2);
    //intersect = {4, 10}
    
    

    现在生成一个介于 0 和 intersect.Count() 之间的随机数

    Random rand = new Random();
    var randomIndex = rand.Next(intersect.Count());
    

    在随机索引位置选取元素

    var randomPick = intersect.ElementAt(randomIndex);
    

    【讨论】:

    • 它有效,但结果与上面相同,我在控制台“挑选 X 号码。挑选 X 号码。挑选 X 号码”一遍又一遍地收到垃圾邮件,大约 30 次(见编辑的问题)跨度>
    • 没关系,控制台被包含在一个 for 循环中。我错过了休息;现在它可以工作了。我接受这个答案,因为它更干净,信息更丰富!
    【解决方案2】:

    试试这个:

            var randomValue = array1
                .Where(x => array2.Contains(x))
                .OrderBy(q => Guid.NewGuid())
                .FirstOrDefault();
    

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2015-10-05
      相关资源
      最近更新 更多