Random+StringBuilder的问题,这只好怀疑是dotnet1.1的bug了
写了个随机字符传的程序
这个是后来改的。测试正常
static public string GetRandomString(int len,string chars)
{
if(len<0)
throw(new ArgumentOutOfRangeException("len",len,"len must >= 0"));
if(chars==null)
throw(new ArgumentNullException("chars"));
//可用字符的长度
int clen=chars.Length;
if(clen==0)
throw(new ArgumentException("chars.Length==0"));
char[] cs=new char[clen];
Random r=_CreateRandom();
for(int i=0;i<len;i++)
cs[i]=chars[r.Next(clen)];
return new string(cs);
}
这个调用GetRandomString(3,"abcdefghijklmnopqrstuvwxyz")
竟然有时候返回"4公元a"
static public string GetRandomString(int len,string chars)
{
if(len<0)
throw(new ArgumentOutOfRangeException("len",len,"len must >= 0"));
if(chars==null)
throw(new ArgumentNullException("chars"));
//可用字符的长度
int clen=chars.Length;
if(clen==0)
throw(new ArgumentException("chars.Length==0"));
StringBuilder sb=new StringBuilder();
Random r=_CreateRandom();
for(int i=0;i<len;i++)
sb.Append(chars[r.Next(clen)]);
return sb.ToString();
}
其中
static private Random _CreateRandom()
{
return new Random(Guid.NewGuid().ToString().GetHashCode());
}
这是什么问题?