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#程序设计有所帮助。