日期:2014-05-17 浏览次数:20455 次
for(int i=0;i<n n是你要生成几位;i++) { 然后用 Random rnd = new Random() 然后 数组[rnd.next(0,数组.Length)] }
------解决方案--------------------
先把temp初始化为allCharArray数组合法下标以外的值,-1
然后产生一个新的整数作为随机数发生器的“种子”,产生一个0~34的整数,做为下标从数组中取出一个字符,添加到最终结果randomNum的后面。
大意就是这样吧。
------解决方案--------------------
/// <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; }
------解决方案--------------------
那个连接解释很详细