import java.util.Random;
public class RandomCharData {
//可以将字符转换赋值给int类型,查看其ASCII码
public static void main(String[] args) {
//随机生成纯数字
for(int i=0;i<15;i++)
createData(20);
System.out.println("---------------");
//生成数字字母
for(int i=0;i<15;i++)
createRandomCharData(20);
}
//根据指定长度生成字母和数字的随机数
//0~9的ASCII为48~57
//A~Z的ASCII为65~90
//a~z的ASCII为97~122
public static void createRandomCharData(int length)
{
StringBuilder sb=new StringBuilder();
Random rand=new Random();//随机用以下三个随机生成器
Random randdata=new Random();
int data=0;
for(int i=0;i<length;i++)
{
int index=rand.nextInt(3);
//目的是随机选择生成数字,大小写字母
switch(index)
{
case 0:
data=randdata.nextInt(10);//仅仅会生成0~9
sb.append(data);
break;
case 1:
data=randdata.nextInt(26)+65;//保证只会产生65~90之间的整数
sb.append((char)data);
break;
case 2:
data=randdata.nextInt(26)+97;//保证只会产生97~122之间的整数
sb.append((char)data);
break;
}
}
String result=sb.toString();
System.out.println(result);
}
//根据指定长度生成纯数字的随机数
public static void createData(int length) {
StringBuilder sb=new StringBuilder();
Random rand=new Random();
for(int i=0;i<length;i++)
{
sb.append(rand.nextInt(10));
}
String data=sb.toString();
System.out.println(length+" random data: "+data);
}
/**
* 随机生成字母加数字的密码
* @param lengths 密码的位数
* @return
*/
public String getStringRandom(int lengths) {
String val = "";
Random random = new Random();
//参数lengths,表示生成几位随机数
for (int i = 0; i < lengths; i++) {
String strOrNum = random.nextInt(2) % 2 == 0 ? "str":"num";
//随机输出是字母还是数字
if ("str".equalsIgnoreCase(strOrNum)) {
//随机输出是大写字母还是小写字母
int temp = random.nextInt(2)%2 == 0 ? 65:97;
val += (char)(random.nextInt(26)+temp);
}else if("num".equalsIgnoreCase(strOrNum)){
val += String.valueOf(random.nextInt(10));
}
}
return val;
}
}