package org.migle.util;
/**
* 随机数工具类,扩展自{@link java.util.Random}提供了随机字符串生成功能
*
* <pre>
*
* Random r = new Random();
* //生成一个长度为10,由a-z,A-Z随机组成的字符串
* String s1 = r.nextString(10);
*
* //生成一个长度为10的,由备选数组中字符随机组成的字符串
* String s2 = r.nextString(new char[] { 'a', 'b', 'c', '1', '汉', '字' }, 10);
*
* </pre>
*
* @see java.util.Random
* @author migle longforfreedom@gmail.com
* @version 1.0 2010-5-9
*
*/
public class Random extends java.util.Random {
private static final long serialVersionUID = -7057641784969086058L;
public Random() {
super();
}
public Random(long seed) {
super(seed);
}
/**
*
* @param length
* 随机字符串长度
* @return 由a-z,A-Z组成的长度为length的随机字符串
*/
public String nextString(int length) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
switch (nextInt(2)) {
case 0:
sb.append((char) ('A' + nextInt(26)));
break;
case 1:
sb.append((char) ('a' + nextInt(26)));
break;
default:
System.out.println("ERROR");
break;
}
}
return sb.toString();
}
/**
* 生成一个 由备选字符数组中字符组成的长度为length的数字符串; 此方法并能保证备选字符肯定出现 <br/>
*
* <pre>
* eg:
* Random r = new Random();
* String s = r.nextString(new char[]{'a','b','c','1','汉','字'},10);
* </pre>
*
* @param chars
* 备选字符
* @param length
* 随机字符串长度
* @return 随机字符串
*/
public String nextString(char[] chars, int length) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append(chars[nextInt(chars.length)]);
}
return sb.toString();
}
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 10; i++) {
System.out.println(r.nextString(new char[] { 'a', 'b', 'c', '1',
'汉', '字' }, 10));
}
}
}
分享到:
评论