`
longforfreedom
  • 浏览: 196934 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

一个扩展一下随机数工具类

    博客分类:
  • JAVA
阅读更多
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));
		}
	}
}
分享到:
评论
Global site tag (gtag.js) - Google Analytics