C#短时间内产生大量不重复的随机数

产生大量不重复的随机数需要满足两个条件:随机性和不重复性,下面就使用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技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#执行外部命令的方法

    执行外部命令是C#语言中常用的一种操作,可以通过Process类实现。下面是关于C#执行外部命令的完整攻略。 1. 创建Process对象 Process是C#语言中提供的一个用于执行外部程序的类。创建一个Process对象需要先引用System.Diagnostics命名空间,然后使用Process类的构造函数创建对象。 using System.Diag…

    C# 2023年6月3日
    00
  • 总结十条.NET异常处理建议

    下面我将对如何总结十条.NET异常处理建议进行详细讲解。在.NET应用程序中,正确处理异常异常是保证应用程序稳定性和可靠性的关键,可以避免应用程序出现崩溃和数据丢失等问题。因此,我们需要总结出一些通用的.NET异常处理建议。 1. 记录异常日志 在捕捉异常后,我们需要记录异常日志来帮助我们更快地找到问题。记录异常日志的方式有很多,例如使用log4net和NL…

    C# 2023年5月15日
    00
  • C# 服务器发送邮件失败实例分析

    让我来详细讲解一下“C#服务器发送邮件失败实例分析”的完整攻略。 问题描述 首先,我们需要明确问题的描述,即C#服务器发送邮件失败的具体表现。通常会出现以下几种情况: 邮件无法发送,没有任何错误提示。 邮件发送失败,返回错误提示信息。 邮件发送成功,但是收件人没有收到邮件。 常见问题排查步骤 接下来,我们需要分析问题并排查原因。常见的问题排查步骤包括: 检查…

    C# 2023年5月14日
    00
  • 在.net core中实现字段和属性注入的示例代码

    在.NET Core中,我们可以使用依赖注入的方式将依赖关系注入到对象中,包括字段和属性注入。以下是在.NET Core中实现字段和属性注入的示例代码的攻略。 1. 创建一个接口 首先,我们需要定义一个接口,它将被注入到我们的类中。此处示例中,我们创建了一个名为 ILogger 的接口,用于记录日志。 public interface ILogger { v…

    C# 2023年5月31日
    00
  • C# GetEnumerator():返回集合的枚举器,用于遍历集合中的元素

    C#中的GetEnumerator()方法用于获取集合中的枚举器。枚举器用于序列化访问集合中的元素。在C#中,每个实现ICollection或ICollection<>接口的类型都必须实现GetEnumerator()方法。这个方法返回一个实现IEnumerator或IEnumerator<>接口的对象,该对象可用于枚举集合中的元素。…

    C# 2023年4月19日
    00
  • Asp.net core程序中使用微软的依赖注入框架

    Asp.net core程序中使用微软的依赖注入框架 在Asp.net core程序中,使用微软的依赖注入框架可以方便地管理应用程序中的依赖项。在本攻略中,我们将介绍如何在Asp.net core程序中使用微软的依赖注入框架,并提供两个示例说明。 步骤一:安装依赖注入框架 在项目中安装依赖注入框架 在项目中安装依赖注入框架。可以使用NuGet包管理器或者在项…

    C# 2023年5月16日
    00
  • C#日期控件datetimepicker保存空值的三种方法

    针对C#日期控件datetimepicker保存空值的三种方法,我来为您提供完整的攻略。 1. 方法一:使用Nullable类型 在C#中,可以使用Nullable类型来保存空值,这个类型在System命名空间中: Nullable<DateTime> nullableDate = null; 使用此方法,即可将datetimepicker控件的…

    C# 2023年5月15日
    00
  • asp.net neatUpload 支持大文件上传组件

    ASP.NET NeatUpload是一个用于实现大文件上传的组件,它支持各种文件上传场景,并提供了丰富的API以适应不同的需求。下面将详细讲解如何使用该组件实现大文件上传的完整攻略。 1. 安装和配置 首先需要将NeatUpload组件添加到项目中。可使用NuGet安装或者手动下载添加。 Nuget安装: Install-Package NeatUploa…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部