`
longforfreedom
  • 浏览: 196815 次
  • 性别: 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));
		}
	}
}
分享到:
评论

相关推荐

    AspBox-v1.3.2工具API

    AspBox是一个方便快速开发ASP框架,AspBox提供了大量实用的ASP通用过程及方法和子类,可以简化大部分的ASP操作。 AspBox还可以进行拓展子类对象以增强自身功能。封装严谨,层层嵌套,提高了代码重复利用多次利用。 ...

    JAVA_API1.6文档(中文)

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    国密SM系列算法开源工具箱GmSSLJNI Java扩展库Windows x64二进制编译版本

    GmSSL-Java目前提供了随机数生成器、SM3哈希、SM3消息认证码(HMAC-SM3)、SM4加密(包括分组加密和CBC/CTR/GCM加密模式)、ZUC加密、SM2加密/签名、SM9加密/签名、SM2证书解析等功能,可以覆盖目前国密算法主要应用...

    java jdk-api-1.6 中文 chmd

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    EXCEL集成工具箱V6.0

    自定义函数,集160个工具于一身,但体积小于15MB。当安装集成工具箱后,如果您使用Excel 2003,则将产生【工具箱】菜单, 包括160多个子菜单;如果您使用Excel 2007或者2010,将产生【集成】与【工具箱】功能区。...

    java api最新7.0

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    JavaAPI1.6中文chm文档 part1

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    Java 1.6 API 中文 New

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    [Java参考文档].JDK_API 1.6

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    JavaAPI中文chm文档 part2

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    JDK_1_6 API

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    [Java参考文档]

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    你必须知道的495个C语言问题

    我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针。可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此...

    C#基类库(苏飞版)

    2.一个操作Sql2005数据库的类(备份,还原,分离,附加,添加删除用户等操作) 这主要是为了让大家练手的,他使用C#代 码的方法实现了对数据的 备份,还原,分离,附加,添加和删除用户等操作 3.DbHelperMySQL类 ...

    EXCEL集成工具箱V8.0完整增强版(精简)

    自定义函数,集160个工具于一身,但体积小于16MB。当安装集成工具箱后,如果您使用Excel 2003,则将产生【工具箱】菜单, 包括160多个子菜单;如果您使用Excel 2007或者2010,将产生【集成】与【工具箱】功能区。...

Global site tag (gtag.js) - Google Analytics