c# 随机数组不重复
时间: 2023-08-24 07:10:20 浏览: 171
在C#中生成不重复的随机数组有多种方法。引用[1]中的代码使用了for循环和while循环的嵌套来实现。首先,通过Random类生成一个随机数,然后使用一个布尔变量a来判断生成的数是否已经存在于数组中。如果存在,则继续生成新的随机数,直到生成的数在数组中不存在为止。然后将生成的数添加到数组中。最后,使用foreach循环输出数组的内容。
引用[2]中的代码使用了List来存储所有可能的数。通过while循环,每次从List中随机取出一个数,并将其从List中移除。然后将取出的数添加到结果列表中,直到结果列表的长度达到要求。最后返回结果列表。
引用[3]中的代码使用了递归的方式来实现。首先,通过Random类生成一个随机数,然后使用一个自定义的方法getNum来判断生成的数是否已经存在于数组中。如果存在,则重新随机获取一个数,并再次调用getNum方法进行判断,直到生成的数在数组中不存在为止。然后将生成的数添加到数组中。
以上是三种常见的实现方法,你可以根据自己的需求选择其中一种来生成不重复的随机数组。
相关问题
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`个位置。这样就可以保证取出的元素不重复,并且随机性较好。
C#封装发发生成指定范围内指定长度的随机数组,且数组之中没有重复的数字
可以使用C#中的Random类和List集合来实现这个问题。
以下是一个示例代码:
```csharp
public static int[] GenerateRandomArray(int length, int minValue, int maxValue)
{
if (maxValue - minValue < length)
{
throw new ArgumentException("maxValue - minValue must be greater than or equal to length");
}
Random random = new Random();
List<int> list = new List<int>();
while (list.Count < length)
{
int num = random.Next(minValue, maxValue);
if (!list.Contains(num))
{
list.Add(num);
}
}
int[] array = list.ToArray();
return array;
}
```
这个方法接受三个参数:数组长度、最小值和最大值。它首先检查给定的范围是否足够生成指定长度的数组,如果不是,则抛出ArgumentException异常。
然后,它创建一个Random对象,并使用一个List<int>对象来存储随机数。在循环中,它生成一个随机数,并检查它是否已经在List中出现过。如果没有,它就将它添加到List中。
最后,它将List转换为int数组,并返回该数组作为结果。
你可以像这样调用这个方法:
```csharp
int[] array = GenerateRandomArray(10, 1, 100);
```
这将生成一个长度为10的随机数组,其中每个元素的值都在1到100之间,且没有重复的数字。
阅读全文