欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

生成由数字大小写字母组成的随机字符串

程序员文章站 2022-07-14 20:04:37
...

方法功能:生成用户指定长度的字符串,由数字、大写字母、小写字母组成,其中数字、大小写字母出现的概率由用户指定。

思路:利用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;
    }