C#中文随机数实现方法
本文实例讲述了C#中文随机数实现方法。分享给大家供大家参考。具体如下:
///<summary> ///随机中文码 ///</summary> ///<returns></returns> privatestringGetRndCh() { System.Text.Encodinggb=System.Text.Encoding.Default; //获取GB2312编码页(表) object[]bytes=CreateRegionCode(4); //调用函数产生4个随机中文汉字编码 string[]str=newstring[4]; System.Text.StringBuildersb=newSystem.Text.StringBuilder(); for(inti=0;i<4;i++) { //根据汉字编码的字节数组解码出中文汉字 str[i]=gb.GetString((byte[])Convert.ChangeType(bytes[i],typeof(byte[]))); sb.Append(str[i].ToString()); } returnsb.ToString(); } ///<summary> ///产生随机中文汉字编码 ///</summary> ///<paramname="strlength"></param> ///<returns></returns> privatestaticobject[]CreateRegionCode(intstrlength) { //定义一个字符串数组储存汉字编码的组成元素 string[]rBase=newString[16]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; Randomrnd=newRandom(); object[]bytes=newobject[strlength]; for(inti=0;i<strlength;i++) { //区位码第1位 intr1=rnd.Next(11,14); stringstr_r1=rBase[r1].Trim(); //区位码第2位 rnd=newRandom(r1*unchecked((int)DateTime.Now.Ticks)+i); intr2; if(r1==13) { r2=rnd.Next(0,7); } else { r2=rnd.Next(0,16); } stringstr_r2=rBase[r2].Trim(); //区位码第3位 rnd=newRandom(r2*unchecked((int)DateTime.Now.Ticks)+i); //更换随机种子 intr3=rnd.Next(10,16); stringstr_r3=rBase[r3].Trim(); //区位码第4位 rnd=newRandom(r3*unchecked((int)DateTime.Now.Ticks)+i); intr4; if(r3==10) { r4=rnd.Next(1,16); } elseif(r3==15) { r4=rnd.Next(0,15); } else { r4=rnd.Next(0,16); } stringstr_r4=rBase[r4].Trim(); //定义两个字节变量存储产生的随机汉字区位码 bytebyte1=Convert.ToByte(str_r1+str_r2,16); bytebyte2=Convert.ToByte(str_r3+str_r4,16); //将两个字节变量存储在字节数组中 byte[]str_r=newbyte[]{byte1,byte2}; //将产生的一个汉字的字节数组放入object数组中 bytes.SetValue(str_r,i); } returnbytes; }
希望本文所述对大家的C#程序设计有所帮助。