C# 快速随机不重复取样
时间: 2023-07-29 18:09:33 浏览: 251
C# 生成随机字符串
你可以使用Fisher-Yates算法来实现快速随机不重复取样。以下是一个示例代码,它将从一个整数数组中随机选择k个元素,而且这k个元素不会重复出现:
```csharp
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int k = 5;
Random rand = new Random();
// Fisher-Yates算法
for (int i = 0; i < k; i++)
{
int j = rand.Next(i, numbers.Length);
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
// 取样结果
int[] result = new int[k];
Array.Copy(numbers, result, k);
```
在这个示例中,我们首先定义了一个整数数组`numbers`和一个整数k,表示我们要从数组中随机选择k个元素。然后,我们使用Random类创建一个随机数生成器`rand`。接下来,我们使用Fisher-Yates算法从数组中随机选择k个元素。最后,我们将选出的k个元素存储在一个新的整数数组`result`中。
阅读全文