LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#生成随机数的三种方法

admin
2024年1月1日 22:58 本文热度 342

一.Random 类

Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数。

Random rd = new Random();

int i = rd.Next();

这种随机数可以达到一些要求较低的目标,但是如果在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出现重复:

for (int i = 0; i < 10; i++)

{

    Random rd = new Random();  //无参即为使用系统时钟为种子

    Console.WriteLine(rd.Next().ToString());

}

这个例子会输出10个相同的"随机数".  修改办法如下:

Random random = new Random();  

for (int i = 0; i < 5; i++) 

{     

    Console.WriteLine(random.Next()); 

}


二.Guid 类

System.Guid

GUID (Globally Unique Identifier) 全球唯一标识符

GUID的计算使用到了很多在本机可取到的数字,如硬件的ID码、当前时间等,所计算出的128位整数(16字节)可以接近唯一的输出。

Console.WriteLine(Guid.NewGuid().ToString());

计算结果是xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx结构的16进制数字,当然这个格式也是可以更改的。


三.RNGCryptoServiceProvider 类

System.Security.Cryptography.RNGCryptoServiceProvider 

RNGCryptoServiceProvider 使用加密服务提供程序 (CSP) 提供的实现来实现加密随机数生成器 (RNG)

RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();

byte[] byteCsp = new byte[10];

csp.GetBytes(byteCsp);

Console.WriteLine(BitConverter.ToString(byteCsp));

因该类使用更严密的算法,所以即使如下放在循环中,所计算出的随机数也是不同的。

for (int i = 0; i < 10; i++)

{

    RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();

    byte[] byteCsp = new byte[10];

    csp.GetBytes(byteCsp);

    Console.WriteLine(BitConverter.ToString(byteCsp));

}


该文章在 2024/1/1 22:58:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved