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日

相关文章

  • Netcore Webapi返回数据的三种方式示例

    .Net Core WebAPI返回数据的三种方式示例 在.Net Core WebAPI中,有多种方式可以返回数据给客户端。本攻略将详细介绍.Net Core WebAPI返回数据的三种方式,并提供两个示例说明。 1. 返回字符串 在.Net Core WebAPI中,可以使用字符串来返回数据给客户端。可以按照以下步骤操作: 在Controller类中,添…

    C# 2023年5月16日
    00
  • C# 操作PostgreSQL 数据库的示例代码

    首先我们需要使用C#的 Npgsql 库来连接并操作 PostgreSQL数据库。 连接PostgreSQL数据库 要连接 PostgreSQL 数据库,需要使用 Npgsql 库并指定主机名、端口、用户名和密码。下面是一个示例代码: using Npgsql; NpgsqlConnection conn = new NpgsqlConnection(&qu…

    C# 2023年6月1日
    00
  • Delphi中使用ISuperObject解析Json数据的实现代码

    让我来详细讲解一下“Delphi中使用ISuperObject解析Json数据的实现代码”的完整攻略吧。 什么是ISuperObject 在介绍如何使用ISuperObject解析Json数据之前,我们先来了解一下ISuperObject是什么。ISuperObject是Delphi语言中一款轻量级的Json解析工具,它不仅易于使用,而且解析速度非常快,目前…

    C# 2023年5月31日
    00
  • .Net动态生成controller遇到的坑

    .Net动态生成controller遇到的坑 简述 在使用.NET开发Web应用程序的过程中,我们常常需要动态地生成Controller。但是这个过程中会遇到一些坑,难以发现并解决。本文将详细讲解这些坑以及如何避免它们。 问题 1. 动态添加的controller无法被MVC框架识别 动态添加Controller后,通过浏览器访问应用程序时,MVC框架会报4…

    C# 2023年5月31日
    00
  • Fastjson 常用API介绍及下载地址(推荐)

    Fastjson 常用 API 介绍及下载地址(推荐) 介绍 Fastjson是一个Java语言编写的高性能JSON处理器,它可以将Java对象转换为JSON,也可以将JSON转换为Java对象,并且速度非常快,被广泛应用于各种Java Web应用中。Fastjson的优势在于比其他的json处理器更快。 下载地址 Fastjson的下载地址:https:/…

    C# 2023年5月31日
    00
  • ASP.NET MVC实现单个图片上传、限制图片格式与大小并在服务端裁剪图片

    在ASP.NET MVC中实现单个图片上传、限制图片格式与大小并在服务端裁剪图片,可以按照以下步骤进行: 步骤1:创建MVC项目 在Visual Studio中创建一个新的ASP.NET MVC项目。 步骤2:上传图 在Views文件夹中创建一个名为Upload的文件夹,并在其中创建一个名为Index.cshtml的视图。在视图中添加以下HTML代码: @u…

    C# 2023年5月12日
    00
  • C#使用二分查找法判断指定字符的方法

    下面为您详细讲解“C#使用二分查找法判断指定字符的方法”的完整攻略。 什么是二分查找法 二分查找,也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或小于中间元素,则搜索下一次查找的数组区间为当前数组区间的左半部分或右半部分。依此类推,直到找到要查找的…

    C# 2023年6月7日
    00
  • ASP 使用三层架构 asp中使用类

    ASP(Active Server Pages)是一种动态网页开发技术,而三层架构则是一种常用的软件架构,采用三层架构能够有效地将程序分层,分离不同的功能模块,使得程序更加易于维护和扩展。 使用三层架构可以将程序分为三个层次:表示层、业务逻辑层和数据访问层。 表示层 表示层主要负责与用户进行交互,呈现数据,通过HTML/CSS/JS等技术将网页呈现给用户。 …

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