public static String getChineseCharacter(long seed) throws Exception{
String str = null; //保存结果
int highPos,lowPOs; //高位、低位
Random random = new Random(seed); //随机数生成器
highPos = 176 + Math.abs(random.nextInt(39)); //计算高位数
lowPos = 161 + Math.abs(random.nextInt(93)); //计算低位数
byte[] b = new byte[2]; //转化为B类型
b[0] = (new Integer(highPos)).byteValue(); //高字节
b[1] = (new Integer(lowPos)).byteValue(); //低字节
str = new String(b, "GBK");
return str;
}
随机生成汉字算法的依据是汉字区位码。由于区位码中既有简体,又有繁体,因此随机取汉字时不能从0开始去。本例高位从176开始,低位从161开始,去掉了很大一部分繁体字和生僻字,但仍然会生成极少量繁体字及生僻字。 可查汉字区位码分布表。