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; }
------解决方案--------------------------------------------------------
那个连接解释很详细