关于Random随机
前段时间需要写个随机函数,于是就有了下面的这个方法.
1
public 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
}
public 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
}然后当外部循环调用这个方法的时候,竟然产生了相同的随机字符串
1
for(int i=1;i<=10;i++)
2
{
3
CreateSeriaNo();
4
}
for(int i=1;i<=10;i++)2
{3
CreateSeriaNo();4
}
但是偶尔也会产生两组不同的随机字符串,无奈下翻看了msdn帮助文档,
上面说到,循环调用同一Random实例将产生同一随机数(不知道我理解的是否正确)
然而拿来对照我的方法,似乎也不符合我的情况啊,毕竟我是在外部循环调用方法,而并非在方法中
循环调用同一随机种子,怎么会生成一样的随机数呢?并且偶尔的几次会长生两样的呢?百思不得其解
最后因为赶时间,也没去研究它了,想到了一个临时解决得方法
将循环种子做为参数传递进来,具体方法如下:
1
public 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
}
public 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
}如此,程序方能正常得按我得要求执行,这里希望能哪位大侠路过得时候指定下迷津..感激不尽~~!

浙公网安备 33010602011771号