日期:2014-05-19  浏览次数:20379 次

请教一个生成随机数的问题
private   void   Page_Load(object   sender,   System.EventArgs   e)
{
this.lblShow.Text   =   haha(hoho(3));
}
private   byte[]   hoho(int   i)
{
byte[]   b   =   new   byte[i];
RNGCryptoServiceProvider   rc   =   new   RNGCryptoServiceProvider();
rc.GetBytes(b);
return   b;
}
private   string   haha(byte[]   b)
{
StringBuilder   sb   =   new   StringBuilder();
for(int   i   =   0;i   <   b.Length;i++)
sb.AppendFormat( "{0:X2} ",b[i]);
return   sb.ToString();
}
上面的代码只能生成一个16进制的随机数

如果我想要生成的随机数字不仅仅是只有16进制的那些数字和字母,我还想要我的随机数里,可能会有W     Z   Y等这些字母的话,那应该怎么办呢??

还有一个问题就是,上面的那两段代码生成一个16进制的随机数,请问生成16进制是上面那一条代码完成的??

最后一个问题,{0:X2}中的X2代表什么?

------解决方案--------------------
一个比较傻的例子,参考一下
private string GenerateCheckCode()
{
//验证码长度
int CODELENGTH = 4;
int number;
string strCode = string.Empty;

Random r = new Random();

for(int i = 0; i < CODELENGTH; i++)
{
number = r.Next();

//字符从0~9, A~Z中随机产生,对应的ASCII码分别为48~57, 65~90
number = number % 36;
if(number < 10)
number += 48;
else
number += 55;

strCode += ((char)number).ToString();
}

//在Cookie中保存验证码
Response.Cookies.Add(new HttpCookie( "CheckCode ", strCode));
return strCode;
}