下面是" C#生成指定范围内的不重复随机数 "的攻略。
1. 使用 C# 的 Random 类生成随机数
System.Random
是 C# 中封装了随机数生成器的类,可以用来生成伪随机数。Random
的默认构造函数可以产生种子数,可以在每次生成随机数时用来确定这个随机数系列的起始位置,从而产生不同的随机数序列。
2. 生成指定范围内的随机数
生成指定范围内的随机数可以使用 Random.Next()
方法,该方法可生成大于等于 0 且小于 maxValue 参数的随机数。例如,如果要生成 0-99 范围内的数字,可以这样实现:
Random ran = new Random();
int randomNumber = ran.Next(100);
其中,Random.Next() 方法参数为一个 int 类型,表示所取随机数的最大值(不包含最大值)。这样就可以方便地生成指定范围内的随机数。
3. 生成不重复的随机数
为了生成不重复的随机数,我们可以采用如下两种做法。
3.1 方案一:生成所有随机数后去重
可以先用 Random.Next()
方法生成有序随机数序列,然后在去重后得到不重复的随机数序列。需要注意的一点是,如果要生成的不重复随机数数量超过了范围,则需要抛出异常。
List<int> randomNums = new List<int>();
int maxNum = 100;
int numCount = 50;
if (maxNum < numCount)
{
throw new ArgumentOutOfRangeException("numCount", "生成的不重复随机数数量不能大于范围内数字的数量");
}
Random random = new Random();
while (randomNums.Count != numCount)
{
int randomNumber = random.Next(maxNum);
if (!randomNums.Contains(randomNumber))
{
randomNums.Add(randomNumber);
}
}
3.2 方案二:生成随机数时逐个判断
而如果我们先生成有序序列再去重,需要额外的空间存储一份整个序列,它才能进行去重处理,而这种处理方式会占用大量的空间。更好的方式是逐步生成随机数,然后判断其是否已经存在于之前生成的随机数中。如果已经存在,则继续生成随机数,直到得到指定数量的随机数为止。
List<int> randomNums = new List<int>();
int maxNum = 100;
int numCount = 50;
if (maxNum < numCount)
{
throw new ArgumentOutOfRangeException("numCount", "生成的不重复随机数数量不能大于范围内数字的数量");
}
Random random = new Random();
while (randomNums.Count != numCount)
{
int randomNumber = random.Next(maxNum);
if (randomNums.IndexOf(randomNumber) == -1)
{
randomNums.Add(randomNumber);
}
}
4. 示例说明
4.1 示例 1:生成指定范围内的不重复随机数
现在,我们需要生成不重复的50个1-100的随机数,代码如下:
List<int> randomNums = new List<int>();
int maxNum = 100;
int numCount = 50;
if (maxNum < numCount)
{
throw new ArgumentOutOfRangeException("numCount", "生成的不重复随机数数量不能大于范围内数字的数量");
}
Random random = new Random();
while (randomNums.Count != numCount)
{
int randomNumber = random.Next(maxNum);
if (randomNums.IndexOf(randomNumber) == -1)
{
randomNums.Add(randomNumber);
}
}
foreach (int num in randomNums)
{
Console.WriteLine(num);
}
4.2 示例 2:生成指定范围内的随机数
如果我们不需要生成不重复的随机数,则可以使用以下代码:
Random ran = new Random();
int n = ran.Next(10, 20);
Console.WriteLine(n);
以上代码将生成10到19之间的随机整数,包含10但不包含20。
这就是" C#生成指定范围内的不重复随机数 "的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#生成指定范围内的不重复随机数 - Python技术站