rainxiang

莺莺燕燕翠翠红红处处融融洽洽 风风雨雨花花叶叶年年暮暮朝朝

 

关于Random随机

前段时间需要写个随机函数,于是就有了下面的这个方法.

 1public string CreateSerialNo()
 2{
 3    string serial_No="";
 4    int len;
 5    string r;
 6    serial_No = DateTime.Now.ToString("MMdd");
 7    Random rnd = new Random;
 8    r = rnd.Next(99999999).ToString();
 9    
10    len = r.Length;
11    if(len<8)
12    {
13        for(int ii=1;ii<=(8-len);ii++)
14            r = "0"+r;
15    }

16    return serial_No+r;
17}

然后当外部循环调用这个方法的时候,竟然产生了相同的随机字符串

1for(int i=1;i<=10;i++)
2{
3     CreateSeriaNo();
4}


但是偶尔也会产生两组不同的随机字符串,无奈下翻看了msdn帮助文档,
上面说到,循环调用同一Random实例将产生同一随机数(不知道我理解的是否正确)
然而拿来对照我的方法,似乎也不符合我的情况啊,毕竟我是在外部循环调用方法,而并非在方法中
循环调用同一随机种子,怎么会生成一样的随机数呢?并且偶尔的几次会长生两样的呢?百思不得其解
最后因为赶时间,也没去研究它了,想到了一个临时解决得方法
将循环种子做为参数传递进来,具体方法如下:

 1public string CreateSerialNo(Random rnd)
 2{
 3    string serial_No="";
 4    int len;
 5    string r;
 6    serial_No = DateTime.Now.ToString("MMdd");
 7
 8    r = rnd.Next(99999999).ToString();
 9    
10    len = r.Length;
11    if(len<8)
12    {
13        for(int ii=1;ii<=(8-len);ii++)
14            r = "0"+r;
15    }

16    return serial_No+r;
17}

如此,程序方能正常得按我得要求执行,这里希望能哪位大侠路过得时候指定下迷津..感激不尽~~!

posted on 2006-03-21 20:03  rainxiang  阅读(532)  评论(1编辑  收藏  举报

导航