随机数的运用,原文https://www.cnblogs.com/swiftma/p/5808954.html 原理与解析 简单六位随机密码
@Test
public void sixRandomNum() {
Random random = new Random();
char[] chars = new char[6];
int lendgth = 6;
for (int i = 0; i < lendgth; i++) {
// char型 0 = int 型的 48
//random,nextInt 取值范围是[0,9] ,其对应的'0'+[0,9] 默认int型,范围是[48,57]
//int 型的[48,57] 强转 char 型范围 [0,9]
//chars[i] = '0'~'9';
chars[i] = (char) ('0' + random.nextInt(10));
}
System.out.println(new String(chars));
// 为什么不直接这样拼接呢??
StringBuilder stringBuilder = new StringBuilder();
for (int i = lendgth ; i > 0; i--) {
stringBuilder.append(random.nextInt(10));
}
System.out.println(stringBuilder);
}
简单8位密码(可能由大写,小写,数字,特殊符号组成)
@Test
public void randomPassword(){
char[] chars = new char[8];
Random rnd = new Random();
int length = 8;
for(int i=0; i<length; i++){
chars[i] = nextChar(rnd);
}
System.out.println(new String(chars));
}
//配置特殊符号
private static final String SPECIAL_CHARS = ".[]-+~<>";
private static char nextChar(Random rnd){
switch(rnd.nextInt(3)){
case 0:
return (char)('a'+rnd.nextInt(26));
case 1:
return (char)('A'+rnd.nextInt(26));
case 2:
return (char)('0'+rnd.nextInt(10));
default:
return SPECIAL_CHARS.charAt(rnd.nextInt(SPECIAL_CHARS.length()));
}
}
复杂8位密码(至少一个大写字母,一个小写字母,一个特殊符号,一个数字)