方法功能:生成用户指定长度的字符串,由数字、大写字母、小写字母组成,其中数字、大小写字母出现的概率由用户指定。
思路:利用random函数生成的随机数决定生成数字、小写字母还是大写字母,生成数字的概率等于其生成区间与总区间长度之比,其他类比。之后再利用随机函数生成特定集合的字符。(random函数生成的随机数在区间[0,1]之间,由数字、大小写字母概率之比对区间进行分割,随机数落在特定分割后的区间就生成对应集合的字符)
public static String RandomStr(double NumRate,double LowerCaseRate, double UpperCaseRate, int length){if(length<=0 || NumRate + LowerCaseRate + UpperCaseRate != 1 || NumRate < 0 || LowerCaseRate <0 || UpperCaseRate <0){System.out.println("参数错误!");return null;}char ch=0;String str = "";for (int i = 0; i < length; i++) {double randomNum = Math.random();if(randomNum>(1 - LowerCaseRate)){ch=(char)(Math.random()*26+97);//生成小写字母}else if(randomNum>(1 - LowerCaseRate - UpperCaseRate)){ch=(char)(Math.random()*26+65);//生成大写字母}else {ch = (char)(Math.random()*10+48);//生成数字}str += ch;//连接新生成的字符}return str;}