当前位置: 代码迷 >> ASP.NET >> 生成随机数?该怎么处理
  详细解决方案

生成随机数?该怎么处理

热度:5328   发布时间:2013-02-25 00:00:00.0
生成随机数???
private string CreateRandomNum(int NumCount)
  {
  string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
  string[] allCharArray = allChar.Split(',');
  string randomNum = "";
  int temp = -1;
Random rand = new Random();
for (int i = 0; i < NumCount; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(35);
if (temp == t)
{
return CreateRandomNum(NumCount);
}
temp = t;
randomNum += allCharArray[t];
}
这段是什么意思??  
  return randomNum;
  }

------解决方案--------------------------------------------------------
http://www.cnblogs.com/liangdelin/archive/2012/04/30/2477055
------解决方案--------------------------------------------------------
随机产生一个由10个阿拉伯数字、26个英文大写字母组成的,长度为NumCount的字符串。
------解决方案--------------------------------------------------------
更正一下,是25个英文字母,不包含字母V
------解决方案--------------------------------------------------------
public string GetCode(int num)
{
string[] source={'0','1','2','3','4','5'.....'Z'};
string code="";
Random rd=new Random();
for(int i=0;i<num;i++)
{
code+=source[rd.Next(0,source.Length-1)];
}
return code;

}
------解决方案--------------------------------------------------------
先创立一个 字符集合的 数组。

C# code
for(int i=0;i<n n是你要生成几位;i++){然后用 Random rnd = new Random()然后 数组[rnd.next(0,数组.Length)]}
------解决方案--------------------------------------------------------
先把temp初始化为allCharArray数组合法下标以外的值,-1
然后产生一个新的整数作为随机数发生器的“种子”,产生一个0~34的整数,做为下标从数组中取出一个字符,添加到最终结果randomNum的后面。

大意就是这样吧。
------解决方案--------------------------------------------------------
C# code
        /// <summary>        /// 产生一个指定长度的随机字符串        /// 由0-9,A-Z组成(除V)        /// </summary>        /// <param name="NumCount">随机字符串长度</param>        /// <returns>随机字符串</returns>        private string CreateRandomNum(int NumCount)        {            //定义字符来源            string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";            string[] allCharArray = allChar.Split(',');//将字符来源转换成数组,方便获取每一位            string randomNum = "";//随机字符串            int temp = -1;//是否重新生成随机种子            Random rand = new Random();            for (int i = 0; i < NumCount; i++)            {                //除了第一次                if (temp != -1)                {                    //动态自定随机种子                    rand = new Random(i * temp * ((int)DateTime.Now.Ticks));                }                //生成一个小于35的非负随机数(因为字符源数组最大小标为34)                int t = rand.Next(35);                //如果此次生成的随机数和上次一样,则重新调用本方法重新开始生成。                if (temp == t)                {                    return CreateRandomNum(NumCount);                }                temp = t;//记录当前产生的随机数(用来判断是否为第一次和判断是否和上一次重复)                //获取并记录产生的随机字符                randomNum += allCharArray[t];            }            return randomNum;        }
------解决方案--------------------------------------------------------
那个连接解释很详细
  相关解决方案