C# 如何从List列表中随机选取并输出10个字符串
解决方案
你只需要把生成随机索引、添加到列表控件的逻辑包裹在10次循环里即可,注意不要把Random的实例化放到循环内部,避免短时间重复实例化生成重复随机值,修改后的代码如下:
listBox1.Items.Clear(); var list = new List<string> { "one", "two", "three", "four" ,"five","six","seven","eight","nine","ten"}; var random = new Random(); // 循环10次执行随机抽取逻辑 for (int i = 0; i < 10; i++) { int index = random.Next(list.Count); listBox1.Items.Add(list[index]); }
如果你的需求是不重复输出所有10个字符串(也就是把列表内所有元素随机排序后输出),可以用Fisher-Yates洗牌算法实现,避免额外的重复判断逻辑:
listBox1.Items.Clear(); var list = new List<string> { "one", "two", "three", "four" ,"five","six","seven","eight","nine","ten"}; var random = new Random(); // 洗牌算法打乱列表顺序 for (int i = list.Count - 1; i > 0; i--) { int j = random.Next(i + 1); (list[i], list[j]) = (list[j], list[i]); } // 直接遍历打乱后的列表添加到控件 foreach (var item in list) { listBox1.Items.Add(item); }
内容的提问来源于stack exchange,提问作者sudesh
相关产品推荐
相关产品推荐

