封装关于随机串的工具类
封装关于随机串的工具类
代码:
import java.util.Random;
public class RandomString {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getChar('a', 'x'));
System.out.println(getSmallChar());
System.out.println(getBigChar());
System.out.println(getDigtalNum());
System.out.println(getSmallCharaStr(8));
System.out.println(getBigCharaStr(6));
System.out.println("混合随机字符串"+getMixStr(5));
System.out.println(getDigtalNumStr(5));
}
// 生成两个字符之间的随机字符[a,z]
public static char getChar(char a, char b) {
if (a < b) {
return (char) (a + (int) (Math.random() * (b - a + 1)));
} else {
return (char) (b + (int) (Math.random() * (a - b + 1)));
}
}
// 生成一个小写字母的字符[a,b]
public static char getSmallChar() {
return getChar('a', 'z');
}
// 生成一个大写字母的字符
public static char getBigChar() {
return getChar('A', 'Z');
}
// 生成一个数字字符
public static char getDigtalNum() {
// char res;
// Random r = new Random();
// res = (char)('0'+ r.nextInt(10));
// return res;
return getChar('0', '9');
}
// 生成一个随机数字串
public static String getDigtalNumStr(int len) {
StringBuffer sb = new StringBuffer();
Random r = new Random();
for (int i = 0; i < len; i++) {
sb.append(getDigtalNum());
}
return sb.toString();
}
// 生成一个随机小写字母串
public static String getSmallCharaStr(int len) {
StringBuffer sb = new StringBuffer();
Random r = new Random();
for (int i = 0; i < len; i++) {
sb.append(getSmallChar());
}
return sb.toString();
}
// 生成一个随机大写字母串
public static String getBigCharaStr(int len) {
StringBuffer sb = new StringBuffer();
Random r = new Random();
for (int i = 0; i < len; i++) {
sb.append(getBigChar());
}
return sb.toString();
}
// 生成一个由大小写字母和数字组成的串
public static String getMixStr(int len) {
StringBuffer sb = new StringBuffer();
Random r = new Random();
for (int i = 0; i < len; i++) {
int ran = (int) (Math.random() * 3);
switch (ran) {
case 0:
sb.append(getBigChar());
break;
case 1:
sb.append(getSmallChar());
break;
case 2:
sb.append(getDigtalNum());
break;
}
}
return sb.toString();
}
}
总结:
1.Math.Random
默认生成一个double类型的小数,可精确到小数点后16位 ,[0,1)
//Math.random类生成一个≥0小于1的随机小数,精度根据接收它的变量的基本类型确定
double i=Math.random();
System.out.println(i);
Random类
1.无参数的nextInt()方法 随机平均生成一个小于2的32次方的数,也可能生成负数 [0,2^32)
Random ran =new Random();
//random.nextint(); 随机平均生成一个小于2的32次方的数,也可能生成负数
int j=ran.nextInt();
System.out.println(j);
2.有参数的nextInt方法 nextInt(max)为一个上限值
Random ran =new Random();
//有参数的nextInt方法 随机生成一个int类型的数 大于等于0小于括号中的参数值,
//例如此方法生成一个[0,10)int类型数
int j1=ran.nextInt(10);
System.out.println(j1);
3.nextFloat( );伪随机地生成并返回一个从 0.0f(包括)到 1.0f(包括)范围内均匀选择(大致)的 float 值。
可精确到小数点后八位
4.NextDouble( );随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值
相当于Math.Random方法。
2.文档级的注释
/* 生成两个字符a,b之间的随机字符[a,b],结果包含ab
* parameter a 范围较小的边界
* parameter b 范围较大的边界
* @return a~b之间的一个随机字符,包含a,b
* */
public static char getChar(char a, char b) {
if (a < b) {
return (char) (a + (int) (Math.random() * (b - a + 1)));
} else {
return (char) (b + (int) (Math.random() * (a - b + 1)));
}
}