c# List<string> 随机选取50个元素
时间: 2023-12-03 09:03:11 浏览: 10
可以使用C#中的Random类和List的Count属性来实现。具体代码如下:
```csharp
List<string> list = new List<string>(); // 假设这里已经有了字符串列表
Random rand = new Random();
List<string> randomList = new List<string>();
int count = 50; // 随机选取的元素个数
while (randomList.Count < count && list.Count > 0)
{
int index = rand.Next(list.Count);
randomList.Add(list[index]);
list.RemoveAt(index);
}
// randomList 中就是随机选取的50个元素
```
这段代码先创建了一个空的字符串列表`randomList`,然后使用`Random`类生成随机数,从原列表`list`中随机取出一个元素,添加到`randomList`中,并从`list`中删除该元素。重复此操作直到`randomList`中有50个元素或者`list`中没有元素为止。最后,`randomList`就是随机选取的50个元素。
相关问题
c#三个数组遍历,前两个数组每次随机各选出一个数,第三个数组每次可随机选择元素个数,写出所有可能
在 C# 中,如果你想要遍历并组合前两个整型数组 (假设为 arr1 和 arr2),以及创建一个可变长度的第三数组 (arr3),你可以使用`Random`类生成随机索引和元素个数,然后通过循环来实现这个过程。这里是一个简单的示例:
```csharp
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// 假设我们有以下两个数组
int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = { 6, 7, 8, 9, 10 };
// 创建一个可变长度的第三数组
List<int> arr3 = new List<int>();
Random random = new Random();
// 遍历并随机选取前两个数组的元素
for (int i = 0; i < 10; // 这里可以设置你想取多少次
)
{
// 随机选择一个索引
int index1 = random.Next(arr1.Length);
int index2 = random.Next(arr2.Length);
// 把这两个数组的随机元素添加到第三数组
arr3.Add(arr1[index1]);
arr3.Add(arr2[index2]);
Console.WriteLine($"Element at iteration {i + 1}: {arr3[i]}");
}
// 随机选择第三数组的元素个数
int lengthToTake = random.Next(1, arr3.Count); // 从1到当前元素个数之间
// 打印随机选择的元素个数
Console.WriteLine($"Taking {lengthToTake} elements from array 3:");
foreach (var element in arr3.GetRange(0, lengthToTake))
{
Console.WriteLine(element);
}
}
}
```
c#中从m个数中随机取出n个不重复的数
在 C# 中,为了从给定的一组 m 个数中随机选取 n 个不重复的数,你可以使用 `System.Linq` 的 `OrderByNew()` 或者 `Zip()` 函数结合 `Random` 类,这里提供一种基于排序的方法:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static List<int> SelectUnique(int[] numbers, int n)
{
if (numbers.Length < n)
throw new ArgumentException("Not enough numbers to select without repetition.");
// 使用 Fisher-Yates 洗牌算法生成随机排列
Random random = new Random();
for (int i = numbers.Length - 1; i >= n; i--)
{
int j = random.Next(i + 1);
Swap(ref numbers[i], ref numbers[j]);
}
// 取前 n 个元素作为结果
return numbers.Take(n).ToList();
}
private static void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
public static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // 例如这里有 m 个数字
int n = 3; // 需要取 n 个不重复的数
var selectedNumbers = SelectUnique(numbers, n);
Console.WriteLine("Selected unique numbers: " + string.Join(", ", selectedNumbers));
}
}
```
这个程序首先检查是否有可能选到不重复的 n 个数,然后对数组进行随机排序,最后取前 n 个元素。运行 `Main` 函数会显示随机选取的不重复的 n 个数。
阅读全文