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日

相关文章

  • 详解java中import的作用

    在Java中,import关键字用于导入其他类或接口的定义,以便在当前类中使用。本文将详细介绍Java中import的作用,包括import的语法、使用方法和注意事项等。 import的语法 在Java中,import关键字的语法如下: import package.name.ClassName; 其中,package.name是要导入的类或接口所在的包名,…

    C# 2023年5月15日
    00
  • ASP.NET(C#) 面试总结面试题大全

    标题规范: 在markdown中,标题通过在文本前添加#号表示。一级标题需要1个#号,二级标题需要2个#号,以此类推。例如,一级标题的写法为: # 一级标题 二级标题的写法为: ## 二级标题 代码块规范: 在markdown中,代码块通过使用三个`来表示代码块的开始和结束,示例如下: public static void main(String[] arg…

    C# 2023年5月14日
    00
  • .Net Core以windows服务方式部署

    关于“.Net Core以Windows服务方式部署”的完整攻略,下面是详细的步骤: 1. 创建.NET Core控制台应用程序 首先需要创建一个.NET Core控制台应用程序,这可以通过在终端中使用“dotnet new console”命令完成,这将创建一个最简单的.NET Core应用程序。 2. 添加Microsoft.Extensions.Hos…

    C# 2023年5月15日
    00
  • 使用C#在注册表中保存信息的例子

    在C#中,可以使用Microsoft.Win32命名空间中的Registry类来访问系统注册表。下面是使用C#在注册表中保存信息的攻略。 1. 创建注册表项 在注册表中保存信息之前,需要先创建一个注册表项。可以使用RegistryKey类的CreateSubKey方法来创建一个新的子项。以下示例代码创建名为“myapp”的注册表项: using Micros…

    C# 2023年6月7日
    00
  • 如何在Unity中检测死循环和卡死

    在Unity中如何检测死循环和卡死主要有以下几种方法: 1. 检测MonoBehaviour的Update方法是否失控 MonoBehaviour的Update方法是Unity脚本中常用的一个方法,它每帧都会执行一次。如果Update方法入口出现死循环或长时间阻塞,就会导致游戏卡死或崩溃。 我们可以通过记录Update方法的执行时间,来判断是否出现了死循环或…

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

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

    C# 2023年6月7日
    00
  • c# Base64编码和图片的互相转换代码

    下面是关于“c# Base64编码和图片的互相转换代码”的完整攻略: Base64编码 Base64编码是将二进制数据通过64个可打印字符来表示的一种编码方式。在C#中,我们可以使用Convert.ToBase64String()方法将一个byte数组进行Base64编码,方法原型如下: public static string ToBase64String…

    C# 2023年6月3日
    00
  • 详解ASP.NET中Identity的身份验证代码

    下面是详解ASP.NET中Identity的身份验证代码的攻略,包含代码示例和说明。 什么是Identity Identity是.NET Core中的一个授权和认证系统,用于管理用户和用户数据。使用Identity可以轻松地添加身份验证、身份验证和访问控制到应用程序中。 配置Identity 要使用Identity,需要在ASP.NET Core项目中添加I…

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