`

生成指定位数的随机字符串和数字

 
阅读更多

import java.util.Random;

public class RandomUtils {
	private static Random randGen = null;
	private static char[] numbersAndLetters = null;
	private static Object initLock = new Object();

	/**
	 * int是字符串的长度,即可产生指定长度的随机字符串。
	 * 
	 * @param length
	 * @return
	 */
	public static final String randomString(int length) {

		if (length < 1) {
			return null;
		}
		if (randGen == null) {
			synchronized (initLock) {
				if (randGen == null) {
					randGen = new Random();
					numbersAndLetters = ("~!@#$%^&*()_+.,/?,.<>';0123456789abcdefghijklmnopqrstuvwxyz没有啊啊啊啊啊啊啊啊啊啊啊啊").toCharArray();
					//numbersAndLetters = ("0123456789abcdefghijklmnopqrstuvwxyz").toCharArray();
				}
			}
		}
		char[] randBuffer = new char[length];
		for (int i = 0; i < randBuffer.length; i++) {
			randBuffer[i] = numbersAndLetters[randGen.nextInt(36)];
		}
		return new String(randBuffer);
	}
	/**
	 * 产生11位随机数,以1开头,类似手机号
	 * @return
	 */
	public static String getRandomPhone(){
		StringBuffer sb=new StringBuffer();
		for (int i = 0; i < 10; i++) {
			sb.append((int) (10 * (Math.random())));
		}
		return "1"+sb.toString();
	}
	/**
	 * 产生指定位数的数字
	 * @param length
	 * @return
	 */
	public static final String randomNum(int pwd_len) {
		//35是因为数组是从0开始的,26个字母+10个数字
	    final int maxNum = 36;
	    int i; //生成的随机数
	    int count = 0; //生成的密码的长度
	    char[] str = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
	    StringBuffer pwd = new StringBuffer("");
	    Random r = new Random();
	    while(count < pwd_len){
	     //生成随机数,取绝对值,防止生成负数,
	   
	     i = Math.abs(r.nextInt(maxNum)); //生成的数最大为36-1
	   
	     if (i >= 0 && i < str.length) {
	      pwd.append(str[i]);
	      count ++;
	     }
	    }
	    return pwd.toString();
	}
	public static void main(String[] args) {
		System.out.println(randomNum(5));
	}
}
 
分享到:
评论

相关推荐

    PHP生成指定数量的不重复随机字符串

    可以生成指定数量的不重复随机字符串,支持纯数字、字母和数字组合、字母数字加特殊字符

    javascript创建含数字字母的随机字符串方法总结

    如果想创建一个含有数字、字母(大小写)或者符号的字符串,比如从[a-zA-Z0-9]集合中中创建一个随机的字符串,长度为5.有没有什么比较好的代码呢?本文提供了几种方法,包括自动改变字符集合。一起来学习下。

    动态库_自动产生六位随机码

    可以自动产生六位十六进制码,附使用方法 使用函数B6CRT()

    java生成16位随机数

    java生成16位随机数

    原生JS生成指定位数的验证码

    使用原生JS生成指定位数的验证码,验证码包括字母和数字 ##思路:使用String的fromCharCode方法将给定范围的随机数转为大小写字母,再通过随机数决定数组当前位置为大写字母,小写字母或者是数字,函数传入的参数...

    javascript常用工具集(带使用示例)

    * 产生x位的随机字符串,注意:第1位不一定是字母 * 产生x位的随机数值型字符串 * 产生yyyyMMddhhmmssSSS组成的时间型字符串(固定长度17位) * 产生一个17+x位的随机字符串 * 产生一个17+x位的随机数值型字符串 * ...

    delphi 开发经验技巧宝典源码

    0093 使用LeftStr函数从左边取得指定个数的字符串 65 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 ...

    delphi 开发经验技巧宝典源码06

    0093 使用LeftStr函数从左边取得指定个数的字符串 65 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 ...

    上海电机学院C语言实训答案

    输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数。 (21)求 的值,其中a是一个数字,如2+22+222+2222+22222(此时a=2,n=5),a和n均由键盘输入。 (22)读入一...

    EXCEL函数公式集

    如何提取一串数字中的几位数字(字符) 如何把一个单元格中的数字挑出来 分割文本 按照给定的位数,截断小数点后的数字 单元格数字提取问题 以关键字提取名称 如何把文本中的前几个字符去除 对一列中的文字统一去掉...

    Excel公式大全操作应用实例(史上最全)

    如何提取一串数字中的几位数字(字符) 如何把一个单元格中的数字挑出来 分割文本 按照给定的位数,截断小数点后的数字 单元格数字提取问题 以关键字提取名称 如何把文本中的前几个字符去除 对一列中的文字统一去掉...

    C#编程经验技巧宝典

    83 &lt;br&gt;0125 按要求生成指定位数编号 83 &lt;br&gt;0126 确定两字符串是否相等 84 &lt;br&gt;0127 判断两字符串中指定子串是否相等 84 &lt;br&gt;0128 判断字符串是否为日期格式 85 &lt;br&gt;0129 清除字符串中指定...

    Excel函数活用范例大辞典(全新版).何先军.2015-2(带书签高清文字版).pdf

    154 计算混合字符串之中字母的个数 312 155 将半角字符转换为全角字符 313 156 计算混合字符串之中汉字的个数 314 157 将单词的首字母转换为大写 315 158 将所有单词转换为小写形式 317 159 将英文句子...

    《程序天下:JavaScript实例自学手册》光盘源码

    第3章 字符串文本和输入框特效 3.1 只带下划线的输入框 3.2 限定文本框可输入字符数 3.3 文字过长的省略号 3.4 输出26个英文字母 3.5 首字母变为大写 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 ...

    程序天下:JavaScript实例自学手册

    第3章 字符串文本和输入框特效 3.1 只带下划线的输入框 3.2 限定文本框可输入字符数 3.3 文字过长的省略号 3.4 输出26个英文字母 3.5 首字母变为大写 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 ...

Global site tag (gtag.js) - Google Analytics