如何从列表中获取随机项

时间:2018-02-15 02:13:43

标签: c# list

美好的一天 我有这个数组和列表,我想从列表中获得一个随机值

random Ram = new Random();
String[] Test= {"C2", "C3", "C4"};

List<String> LTest = new List<String>(Test);

String var = Ram.Next(LTest);
  

错误 - 无法从system.collection.generic.list转换为'Int'

我还想继续从列表中删除该对象并将其添加到新的

Test.remove(Var);

newlist.add(Var);
谢谢。

2 个答案:

答案 0 :(得分:2)

Random.Next 接受参数 #standardSQL WITH A AS ( SELECT 1 a_id, 400 a_start, 500 a_end, 'White' color UNION ALL SELECT 1, 10, 20 , 'Red' UNION ALL SELECT 2, 2, 10, 'Blue' UNION ALL SELECT 4, 88, 90, 'Color' ), B AS ( SELECT 1 b_id, 1 b_start, 2 b_end, 'XYZ1' name UNION ALL SELECT 1, 50, 60, 'XYZ4' UNION ALL SELECT 2, 150, 160,'ABC1' UNION ALL SELECT 2, 50, 60, 'ABC2' UNION ALL SELECT 4, 100, 120,'EFG' ) SELECT a_id, a_start, a_end, color, ARRAY_AGG(name ORDER BY POW(ABS(a_start - b_start), 2) + POW(ABS(a_end - b_end), 2) LIMIT 1)[SAFE_OFFSET(0)] name FROM A JOIN B ON a_id = b_id GROUP BY a_id, a_start, a_end, color ORDER BY a_id 。另外 Row a_id a_start a_end color name 1 1 400 500 White XYZ4 2 1 10 20 Red XYZ1 3 2 2 10 Blue ABC2 4 4 88 90 Color EFG 使用 { {1}} ,因为 int 中的 reserved keyword ,您需要

don't

答案 1 :(得分:2)

如果您想随机选择列表中的项目,可以采用以下几种方式。

您可以使用random来计算整数,并将其用作索引:

var index = random.Next(list.Count);
var randomItem = list[index];

或者您可以随机对列表进行排序并选择第一个:

var item = list.OrderBy( s => random.NextDouble() ).First();

第一种方法很常见;如果您希望从列表中选择多个随机项并且您希望避免重复,则第二种方法很方便。只需要拿第一,第二,第三等项目。