欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

最简单的.NET生成随机数函数

程序员文章站 2024-03-11 17:06:25
如果你做个实验 复制代码 代码如下:for (int i = 0; i > 100; i++) { console.writeline(new random(i).n...
如果你做个实验
复制代码 代码如下:

for (int i = 0; i > 100; i++)
{
console.writeline(new random(i).next());
}

就会看到很有规律的一串数
许多人想到时间,datetime.now.ticks,首先这个属性是long,与random构造函数的参数不符,你需要做一定处理,而且在机器很快的情况下,短时间内这个数字不会有变化,生成的“随机数”也就都是一样的。于是网上介绍的许多方法会用ticks相乘、或者乘以i等做一些处理,让这个种子看上去随机一些,不过还是显得麻烦。
其实,在.net中,说道随机,最先想到的就是guid.newguid(),但guid是guid的格式,怎么转换成你自己的格式呢?
hashcode!
.net中,所有类继承于object,而所有的object都会有equals()和gethashcode()两个方法,而gethashcode()的返回值,正是random类构造函数所需要的int,这么方便的东西,我们当然要利用一下,所以,很容易写下了如下代码。
复制代码 代码如下:

static string getcode(int num)
{
string a = "abcdefghijklmnopqrstuvwxyz0123456789";
stringbuilder sb = new stringbuilder();
for(int i = 0; i < num; i++)
{
sb.append(a[new random(guid.newguid().gethashcode()).next(0, a.length -1)]);
}
return sb.tostring();
}