C#中文随机数实现方法
程序员文章站
2023-12-03 10:39:04
本文实例讲述了c#中文随机数实现方法。分享给大家供大家参考。具体如下:
///
/// 随机中文码
///
本文实例讲述了c#中文随机数实现方法。分享给大家供大家参考。具体如下:
/// <summary> /// 随机中文码 /// </summary> /// <returns></returns> private string getrndch() { system.text.encoding gb = system.text.encoding.default; //获取gb2312编码页(表) object[] bytes = createregioncode(4); //调用函数产生4个随机中文汉字编码 string[] str = new string[4]; system.text.stringbuilder sb = new system.text.stringbuilder(); for (int i = 0; i < 4; i++) { //根据汉字编码的字节数组解码出中文汉字 str[i] = gb.getstring((byte[])convert.changetype(bytes[i], typeof(byte[]))); sb.append( str[i].tostring()); } return sb.tostring (); } /// <summary> /// 产生随机中文汉字编码 /// </summary> /// <param name="strlength"></param> /// <returns></returns> private static object[] createregioncode(int strlength) { //定义一个字符串数组储存汉字编码的组成元素 string[] rbase = new string[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; random rnd = new random(); object[] bytes = new object[strlength]; for (int i = 0; i < strlength; i++) { //区位码第1位 int r1 = rnd.next(11, 14); string str_r1 = rbase[r1].trim(); //区位码第2位 rnd = new random(r1 * unchecked((int)datetime.now.ticks) + i); int r2; if (r1 == 13) { r2 = rnd.next(0, 7); } else { r2 = rnd.next(0, 16); } string str_r2 = rbase[r2].trim(); //区位码第3位 rnd = new random(r2 * unchecked((int)datetime.now.ticks) + i); //更换随机种子 int r3 = rnd.next(10, 16); string str_r3 = rbase[r3].trim(); //区位码第4位 rnd = new random(r3 * unchecked((int)datetime.now.ticks) + i); int r4; if (r3 == 10) { r4 = rnd.next(1, 16); } else if (r3 == 15) { r4 = rnd.next(0, 15); } else { r4 = rnd.next(0, 16); } string str_r4 = rbase[r4].trim(); //定义两个字节变量存储产生的随机汉字区位码 byte byte1 = convert.tobyte(str_r1 + str_r2, 16); byte byte2 = convert.tobyte(str_r3 + str_r4, 16); //将两个字节变量存储在字节数组中 byte[] str_r = new byte[] { byte1, byte2 }; //将产生的一个汉字的字节数组放入object数组中 bytes.setvalue(str_r, i); } return bytes; }
希望本文所述对大家的c#程序设计有所帮助。
上一篇: C#中文件名或文件路径非法字符判断方法
下一篇: 批处理 动态sql