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

如果你做个实验


代码如下:

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();
}

(0)

相关推荐

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

    如果你做个实验 复制代码 代码如下: for (int i = 0; i > 100; i++) { Console.WriteLine(new Random(i).Next()); } 就会看到很有规律的一串数 许多人想到时间,DateTime.Now.Ticks,首先这个属性是long,与Random构造函数的参数不符,你需要做一定处理,而且在机器很快的情况下,短时间内这个数字不会有变化,生成的"随机数"也就都是一样的.于是网上介绍的许多方法会用Ticks相乘.或者乘以i等做

  • 生成随机数rand函数的用法详解

    函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子.如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand().而使用同种子相同的数调用 srand()会导致相同的随机数序列被生成.srand((unsigned)time(NULL))则使用系统定时/计数器的值做为随机种子.每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)tim

  • 在PHP模板引擎smarty生成随机数的方法和math函数详解

    这个当然绝对是可行的,但过于复杂,下面作者就如何直接在smarty模板中生成随机数这个小技巧和大家分享一下. 现在假设在smarty模板中需要生成一个125-324之间的随机数,那么可以按如下写法: 复制代码 代码如下: {math equation=rand(125,324)} 这样就实现了我们的目的了,怎么样?是不是很简单,其实这里主要用到了smarty模板中的math函数,下面对Smarty math函数的作用以及用法做个简要的讲解. math 允许模板设计者在模板中进行数学表达式运算.

  • Python简单生成随机数的方法示例

    本文实例讲述了Python简单生成随机数的方法.分享给大家供大家参考,具体如下: 主要知识点: 随机整数: random.randint(a,b):返回随机整数x,a<=x<=b 包含范围的随机整数 random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值. 0-1之间的随机浮点数 随机实数:random.random():返回0到1之间的浮点数 指定范围的随机浮点数 random.uniform(a

  • php简单生成随机数的方法

    本文实例讲述了php简单生成随机数的方法.分享给大家供大家参考.具体如下: <?php /** *生成随机数,可用户验证码 *@param */ function randStr($m = 5) { $new_str = ''; $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwsyz0123456789'; $max=strlen($str)-1; for ($i = 1; $i <= $m; ++$i) { $new_str

  • JS简单生成随机数(随机密码)的方法

    本文实例讲述了JS简单生成随机数(随机密码)的方法.分享给大家供大家参考,具体如下: 1. Math.random()生成一个0~1的随机数 0<=Math.random()<1 2. Math.random()*100 则生成一个0~100之间的随机数 3. Math.random()*100 + 100 则生成一个100~200之间的随机数 4. 所以Math.random()*m 则生成一个0~m的随机数 实例代码如下: <!DOCTYPE html PUBLIC "-/

  • C/C++产生随机数函数简单介绍

    计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子.(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了.) 我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,

  • numpy中生成随机数的几种常用函数(小结)

    1.使用numpy生成随机数的几种方式 1)生成指定形状的0-1之间的随机数:np.random.random()和np.random.rand() array1 = np.random.random((3)) display(array1) # ----------------------------------- array2 = np.random.random((3,4)) display(array2) # ----------------------------------- arr

  • JavaScript生成随机数的4种自定义函数分享

    第一种方法 /* *@desc:生成随机字符串 *@remark:toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶.如果不指定,默认基数是10进制 */ function generateRandomAlphaNum(len) { var rdmString = ""; for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdm

  • JS实现的生成随机数的4个函数分享

    第一种方法 复制代码 代码如下: /* *@desc:生成随机字符串 *@remark:toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶.如果不指定,默认基数是10进制 */ function generateRandomAlphaNum(len) {     var rdmString = "";     for (; rdmString.length < len; rdmString += Math.random().toString(36).sub

随机推荐