博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#利用Guid实现真随机数
阅读量:5242 次
发布时间:2019-06-14

本文共 1155 字,大约阅读时间需要 3 分钟。

C#中的随机数可以利用Random类很简单地生成随机数,代码如下:

Random rdmNum=new Random();//生成随机数对象int ans=rdmNum.Next(a,b);//生成大于大于a小于b的随机数(int)型

但是在不指定种子时,默认的种子是系统时间。这样的设置对于一般的随机数生成过程是没有问题的,但是对于一些快速、大量生成随机数的问题(尤其创建与利用循环批量生成随机数时),会出现由于运算速度太快导致在一个相同或者相近的系统时间内生成多个随机数的情况,此时生成的这些随机数都是相同的,显然是不符合现实情况要求的。

这种问题可以借助GUID(全局唯一标识符)来解决:

 

 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。随机生成两个相同GUID的可能性是非常小的,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。
格式
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个4位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
 

GUID特点

★需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
★GUID理论上能产生全球唯一的值,对于以后的数据导入很方便。
 
利用GUID生成随机数的代码:
byte[] buffer = Guid.NewGuid().ToByteArray();//生成字节数组  int iRoot = BitConverter.ToInt32(buffer, 0);//利用BitConvert方法把字节数组转换为整数  Random rdmNum = new Random(iRoot);//以这个生成的整数为种子

这样,生成的随机数就是完全随机、不重复的了

转载于:https://www.cnblogs.com/jiading/p/9902835.html

你可能感兴趣的文章
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>