public static object[] CreateRegionCode(int strlength, bool isRandomCount = false) { if (isRandomCount) { Random random = new Random(); strlength = random.Next(1, strlength + 1); } //定義一個字符串數組儲存漢字編碼的組成元素 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數組用來 object[] bytes = new object[strlength]; /*每循環一次產生一個含兩個元素的十六進制字節數組,並將其放入bject數組中 每個漢字有四個區位碼組成 區位碼第1位和區位碼第2位作為字節數組第一個元素 區位碼第3位和區位碼第4位作為字節數組第二個元素 */ 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; }
姓氏獲取 public static string GetSurname() { Random random = new Random(); int index = random.Next(0, surname.Count()); return surname[index]; } public static List<string> surname = new List<string>() {"趙", "錢", "孫", "李", "周", "吳", "鄭", "王", "馮", "陳", "楮", "衛", "蔣", "沈", "韓", "楊", "朱", "秦", "尤", "許", "何", "呂", "施", "張", "孔", "曹", "嚴", "華", "金", "魏", "陶", "姜", "戚", "謝", "鄒", "喻", "柏", "水", "竇", "章", "雲", "蘇", "潘", "葛", "奚", "范", "彭", "郎", "魯", "韋", "昌", "馬", "苗", "鳳", "花", "方", "俞", "任", "袁", "柳", "酆", "鮑", "史", "唐", "費", "廉", "岑", "薛", "雷", "賀", "倪", "湯", "滕", "殷", "羅", "畢", "郝", "鄔", "安", "常", "樂", "於", "時", "傅", "皮", "卞", "齊", "康", "伍", "余", "元", "卜", "顧", "孟", "平", "黃", "和", "穆", "蕭", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄", "米", "貝", "明", "臧", "計", "伏", "成", "戴", "談", "宋", "茅", "龐", "熊", "紀", "舒", "屈", "項", "祝", "董", "梁", "杜", "阮", "藍", "閩", "席", "季", "麻", "強", "賈", "路", "婁", "危", "江", "童", "顏", "郭", "梅", "盛", "林", "刁", "鍾", "徐", "丘", "駱", "高", "夏", "蔡", "田", "樊", "胡", "凌", "霍", "虞", "萬", "支", "柯", "昝", "管", "盧", "莫", "經", "房", "裘", "繆", "干", "解", "應", "宗", "丁", "宣", "賁", "鄧", "郁", "單", "杭", "洪", "包", "諸", "左", "石", "崔", "吉", "鈕", "龔", "程", "嵇", "邢", "滑", "裴", "陸", "榮", "翁", "荀", "羊", "於", "惠", "甄", "麹", "家", "封", "芮", "羿", "儲", "靳", "汲", "邴", "糜", "松", "井", "段", "富", "巫", "烏", "焦", "巴", "弓", "牧", "隗", "山", "谷", "車", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋", "仲", "伊", "宮", "寧", "仇", "欒", "暴", "甘", "斜", "厲", "戎", "祖", "武", "符", "劉", "景", "詹", "束", "龍", "葉", "幸", "司", "韶", "郜", "黎", "薊", "薄", "印", "宿", "白", "懷", "蒲", "邰", "從", "鄂", "索", "咸", "籍", "賴", "卓", "藺", "屠", "蒙", "池", "喬", "陰", "郁", "胥", "能", "蒼", "雙", "聞", "莘", "黨", "翟", "譚", "貢", "勞", "逄", "姬", "申", "扶", "堵", "冉", "宰", "酈", "雍", "郤", "璩", "桑", "桂", "濮", "牛", "壽", "通", "邊", "扈", "燕", "冀", "郟", "浦", "尚", "農", "溫", "別", "庄", "晏", "柴", "瞿", "閻", "充", "慕", "連", "茹", "習", "宦", "艾", "魚", "容", "向", "古", "易", "慎", "戈", "廖", "庾", "終", "暨", "居", "衡", "步", "都", "耿", "滿", "弘", "匡", "國", "文", "寇", "廣", "祿", "闕", "東", "歐", "殳", "沃", "利", "蔚", "越", "夔", "隆", "師", "鞏", "厙", "聶", "晁", "勾", "敖", "融", "冷", "訾", "辛", "闞", "那", "簡", "饒", "空", "曾", "毋", "沙", "乜", "養", "鞠", "須", "豐", "巢", "關", "蒯", "相", "查", "后", "荊", "紅", "游", "竺", "權", "逑", "蓋", "益", "桓", "公", "仉", "督", "晉", "楚", "閻", "法", "汝", "鄢", "塗", "欽", "岳", "帥", "緱", "亢", "況", "后", "有", "琴", "歸", "海", "墨", "哈", "譙", "笪", "年", "愛", "陽", "佟", "商", "牟", "佘", "佴", "伯", "賞", "萬俟", "司馬", "上官", "歐陽", "夏侯", "諸葛", "聞人", "東方", "赫連", "皇甫", "尉遲", "公羊", "澹台", "公冶", "宗政", "濮陽", "淳於", "單於", "太叔", "申屠", "公孫", "仲孫", "軒轅", "令狐", "鍾離", "宇文", "長孫", "慕容", "鮮於", "閭丘", "司徒", "司空", "丌官", "司寇", "子車", "微生", "顓孫", "端木", "巫馬", "公西", "漆雕", "樂正", "壤駟", "公良", "拓拔", "夾谷", "宰父", "谷梁", "段干", "百里", "東郭", "南門", "呼延", "羊舌", "梁丘", "左丘", "東門", "西門", "南宮"};
//使用
for (int j = 0; j < 20; j++) { //姓 string surname = ChineseName.GetSurname(); //獲取GB2312編碼頁(表) Encoding gb = Encoding.GetEncoding("gb2312"); //調用函數產生4個隨機中文漢字編碼 object[] bytes = ChineseName.CreateRegionCode(2, true); //根據漢字編碼的字節數組解碼出中文漢字 string name = string.Empty; for (int i = 0; i < bytes.Length; i++) { name += gb.GetString((byte[])Convert.ChangeType(bytes[i], typeof(byte[]))); } Console.WriteLine($"{surname} {name}"); Thread.Sleep(100); }