产生大量不重复的随机数需要满足两个条件:随机性和不重复性,下面就使用C#语言,给出一种实现这个目标的攻略。
第一步:定义一个列表
在产生随机数时,需要先定义一个列表,用来存储已经产生过的随机数。因为需要保证随机数不重复,这个列表会存储已经被产生的随机数,每次产生一个新的随机数时,需要和这个列表中的所有元素进行比较,以确保不重复。具体实现代码如下:
List<int> usedNumbers = new List<int>();
第二步:生成随机数
接下来,在产生随机数的时候,需要使用C#内置的Random类。在Random类中,有Next()方法可以生成一定范围内的随机数。使用这个方法,我们可以先定一个产生的随机数的数量,然后在每次产生随机数时,将这个范围传入Next()方法,以生成一个随机数。
Random random = new Random();
int randomNumber = random.Next(1, 100);
第三步:检查随机数是否重复
当产生完一个随机数后,需要将其和已有的随机数进行比较,以确保其不重复。具体的实现方法是:遍历之前存储的随机数列表,检查新产生的随机数是否和列表中的任何一个元素相等,如果相等,则重新产生,否则添加到列表中,进入下一轮的循环。具体实现代码如下:
while (true)
{
int randomNumber = random.Next(1, 100);
if (!usedNumbers.Contains(randomNumber))
{
usedNumbers.Add(randomNumber);
break;
}
}
上述代码给出了如何产生一个不重复的随机数。通常情况下,我们需要产生多个不重复的随机数,实现方法是在上述代码的while循环中增加第一个参数num,用于产生num个不重复的随机数。
下面,给出一个完整的示例代码:生成20个不重复的随机数。
List<int> usedNumbers = new List<int>();
Random random = new Random();
for(int i = 0; i < 20; i++)
{
while (true)
{
int randomNumber = random.Next(1, 100);
if (!usedNumbers.Contains(randomNumber))
{
usedNumbers.Add(randomNumber);
Console.WriteLine(randomNumber);
break;
}
}
}
该示例代码中,使用了while循环,来保证每次生成的随机数都是不重复的。当生成给定次数的随机数后,程序退出。运行该程序,可以得到如下的随机数序列,每个随机数都是不重复的。
2
85
99
16
42
9
58
92
56
94
90
26
4
73
38
34
51
96
37
81
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#短时间内产生大量不重复的随机数 - Python技术站