概述
import java.util.Random;
public class UranDom {
/**
* 以下均为random函数
* **/
private static Random random;
private static long seed;
static {
seed=System.currentTimeMillis();
random=new Random(seed);
}
private UranDom(){}
/**
* 获取种子值
* @return long 随机种子生成器种子值
*
* */
public static long getSeed(){
return seed;
}
/**
* 随机返回0到1之间的实数[0,1)
* @return double 随机数
*
* **/
public static double uniform(){
return random.nextDouble();
}
/**
* 随机0到N-1的整数[0,N)
* @param N 上限
* @retrun int 随机数
* **/
public static int uniform(int N){
return random.nextInt(N);
}
/**
* 随机返回a到b-1之间的整数
* @param a 下限
* @param b 上限
* @return int 随机数
*
* **/
public static int uniform(int a,int b){
return a+uniform(b-1);
}
/**
* 随机返回a到b之间的实数
* @param a 下限
* @param b 上限
* @return int 随机数
*
* **/
public static double uniform(double a,double b){
return a+uniform()*(b-a);
}
/** *
* @param type ==1 数字
* @param type ==2 纯小写字母
* @param type ==3 纯大写字母
* @param type ==4 数字和小写字母混排
* @param type ==5 数字和大写字母混排
* @param type ==6大写和小写字母混排
* @param type ==7 大小写和数字混排
* @param length 长度
* @param both 只有length>2且type>4时生效,意思是,两者或以上都必须有一个以上的类型
* **/
public static String RandString(int type,int length,boolean both){
StringBuffer buffer=new StringBuffer();
StringBuffer sb=null;
String number="0123456789";
String sletter="abcdefghijklmnopqrstuvwxyz";
String bletter="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//处理type
switch(type){
case 1://纯数字
buffer.append(number);
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(10)));
length--;
}
break;
case 2://纯小写
buffer.append(sletter);
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(26)));
length--;
}
break;
case 3://纯大写
buffer.append(bletter);
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(26)));
length--;
}
break;
case 4://数字+小写
buffer.append(number+sletter);
if(!both){
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(36)));
length--;
}
}else {//两者必有其一
sb=new StringBuffer();
int ra1=UranDom.uniform(length);
int ra2=UranDom.uniform(length);
//如果重复则重新随机
while(ra2==ra1){
ra2=UranDom.uniform(length);
}
//随机第一个和第二个的数值
char c1=(char)('0'+UranDom.uniform(10));
char c2=(char)('a'+UranDom.uniform(26));
while(length>0){
if(length==ra1){
sb.append(c1);
}
else if(length==ra2)
{
sb.append(c2);
}
else sb.append(buffer.charAt(UranDom.uniform(36)));
length--;
}
}
break;
case 5://数字+大写
buffer.append(number+bletter);
if(!both){
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(36)));
length--;
}
}else {//两者必有其一
sb=new StringBuffer();
int ra1=UranDom.uniform(length);
int ra2=UranDom.uniform(length);
//如果重复则重新随机
while(ra2==ra1){
ra2=UranDom.uniform(length);
}
//随机第一个和第二个的数值
char c1=(char)('0'+UranDom.uniform(10));
char c2=(char)('A'+UranDom.uniform(26));
while(length>0){
if(length==ra1){
sb.append(c1);
}
else if(length==ra2)
{
sb.append(c2);
}
else sb.append(buffer.charAt(UranDom.uniform(36)));
length--;
}
}
break;
case 6://大写+小写
buffer.append(sletter+bletter);
if(!both){
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(52)));
length--;
}
}else {//两者必有其一
sb=new StringBuffer();
int ra1=UranDom.uniform(length);
int ra2=UranDom.uniform(length);
//如果重复则重新随机
while(ra2==ra1){
ra2=UranDom.uniform(length);
}
//随机第一个和第二个的数值
char c1=(char)('a'+UranDom.uniform(26));
char c2=(char)('A'+UranDom.uniform(26));
while(length>0){
if(length==ra1){
sb.append(c1);
}
else if(length==ra2)
{
sb.append(c2);
}
else sb.append(buffer.charAt(UranDom.uniform(52)));
length--;
}
}
break;
case 7:
buffer.append(number+sletter+bletter);
if(!both){
sb=new StringBuffer();
while(length>0){
sb.append(buffer.charAt(UranDom.uniform(62)));
length--;
}
}else {//三者必有其一
sb=new StringBuffer();
int ra1=UranDom.uniform(length);
int ra2=UranDom.uniform(length);
int ra3=UranDom.uniform(length);
//如果重复则重新随机
while(ra2==ra1){
ra2=UranDom.uniform(length);
}
while(ra3==ra2||ra3==ra1){
ra3=UranDom.uniform(length);
}
//随机第一个和第二个的数值
char c1=(char)('0'+UranDom.uniform(10));
char c2=(char)('A'+UranDom.uniform(26));
char c3=(char)('a'+UranDom.uniform(26));
System.out.println(c1+c2+c3);
while(length>0){
if(length==ra1){
sb.append(c1);
}
else if(length==ra2)
{
sb.append(c2);
}
else if(length==ra3){
sb.append(c3);
}
else sb.append(buffer.charAt(UranDom.uniform(62)));
length--;
}
break;
}
}
最后
以上就是贤惠秋天为你收集整理的随机字符串处理(java方法)的全部内容,希望文章能够帮你解决随机字符串处理(java方法)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复