c# 随机数组不重复
时间: 2023-08-24 14:10:20 浏览: 58
在C#中生成不重复的随机数组有多种方法。引用[1]中的代码使用了for循环和while循环的嵌套来实现。首先,通过Random类生成一个随机数,然后使用一个布尔变量a来判断生成的数是否已经存在于数组中。如果存在,则继续生成新的随机数,直到生成的数在数组中不存在为止。然后将生成的数添加到数组中。最后,使用foreach循环输出数组的内容。
引用[2]中的代码使用了List来存储所有可能的数。通过while循环,每次从List中随机取出一个数,并将其从List中移除。然后将取出的数添加到结果列表中,直到结果列表的长度达到要求。最后返回结果列表。
引用[3]中的代码使用了递归的方式来实现。首先,通过Random类生成一个随机数,然后使用一个自定义的方法getNum来判断生成的数是否已经存在于数组中。如果存在,则重新随机获取一个数,并再次调用getNum方法进行判断,直到生成的数在数组中不存在为止。然后将生成的数添加到数组中。
以上是三种常见的实现方法,你可以根据自己的需求选择其中一种来生成不重复的随机数组。
相关问题
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`中。
c# 数组里随机取多个数不重复的
在 C# 中实现从数组中随机取多个数不重复可以使用洗牌算法(Fisher-Yates Shuffle Algorithm)。以下是一个简单的实现:
```csharp
public static T[] Shuffle<T>(T[] array, int count)
{
var random = new Random();
var result = new T[count];
Array.Copy(array, result, count);
for (int i = count; i < array.Length; i++)
{
var j = random.Next(i + 1);
if (j < count)
{
result[j] = array[i];
}
}
return result;
}
```
在上面的代码中,`Shuffle`方法接受两个参数:要随机取数的数组`array`和要取的数的个数`count`。该方法返回一个新的数组,包含从`array`数组中随机取的`count`个不重复的元素。
使用示例:
```csharp
var array = new[] { 1, 2, 3, 4, 5 };
var result = Shuffle(array, 3);
foreach (var item in result)
{
Console.WriteLine(item);
}
```
上面的代码中,`Shuffle`方法将从`array`数组中随机取3个不重复的元素,并将它们存储在`result`数组中。具体的实现方法是,首先将前`count`个元素复制到`result`数组中,然后从`count`到数组末尾进行遍历,对于每个元素,随机生成一个小于等于当前下标的随机数`j`,如果`j`小于`count`,则将该元素存储在`result`数组中的第`j`个位置。这样就可以保证取出的元素不重复,并且随机性较好。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)