C#如何生成随机不重复的整数
时间: 2023-09-10 11:08:28 浏览: 149
在 C# 中,可以使用 Random 类生成随机数,然后使用 HashSet 存储已经生成的随机数,以确保生成的随机数不重复。下面是示例代码:
```csharp
int minValue = 1; // 随机数的最小值
int maxValue = 100; // 随机数的最大值
int count = 10; // 需要生成的随机数的个数
Random random = new Random();
HashSet<int> set = new HashSet<int>();
while (set.Count < count)
{
int randomNumber = random.Next(minValue, maxValue + 1); // 生成随机数
if (!set.Contains(randomNumber))
{
set.Add(randomNumber); // 将随机数加入 set 中
}
}
foreach (int number in set)
{
Console.WriteLine(number); // 输出生成的随机数
}
```
上面的代码会生成 10 个不重复的随机数,范围是 1 到 100。如果需要生成更多的随机数,可以调整 count 的值,如果需要修改随机数的范围,可以修改 minValue 和 maxValue 的值。
相关问题
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#生成10个1-20之间的不重复的随机整数存储到一个ArrayList集合中,并计算这些数的平均值、最小值、最大值。
在C#中,你可以使用`Random`类生成随机数,并结合`ArrayList`和LINQ来完成这个任务。以下是实现步骤:
首先,创建一个ArrayList用于存储随机数:
```csharp
ArrayList randomNumbers = new ArrayList();
```
然后,创建一个Random实例并生成10个1到20之间的不重复随机整数:
```csharp
Random rand = new Random();
int[] uniqueNumbers = Enumerable.Range(1, 20)
.OrderBy(x => Guid.NewGuid())
.Take(10)
.ToArray(); // 使用Guid.NewGuid()保证唯一性
randomNumbers.AddRange(uniqueNumbers);
```
接下来,计算平均值、最小值和最大值:
```csharp
double average = randomNumbers.Average();
int min = Convert.ToInt32(randomNumbers.Min());
int max = Convert.ToInt32(randomNumbers.Max());
```
最后,可以打印结果:
```csharp
Console.WriteLine("随机数列表: " + string.Join(",", randomNumbers));
Console.WriteLine("平均值: " + average);
Console.WriteLine("最小值: " + min);
Console.WriteLine("最大值: " + max);
```
阅读全文