生成随机数

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Test1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 产生100000个长度为11的随机无重复字符串
		Set<String> set = cDifferentRandoms(100000, 11);  		
		long startTime = System.currentTimeMillis();		
		for (String str : set) {
			System.out.println(str);
		}
		long endTime = System.currentTimeMillis();
		
		System.out.println("Totally " + ((float)(endTime - startTime) / 1000) + " seconds used!");
	}
	
	public static Set<String> cDifferentRandoms(int n, int m) { 
		// 产生n个只含有数字和字母长度为m(m<=52)的无重复随机字符串
		if (m > 52) {
			return null;
		} else {
			Set<String> set = new HashSet<String>();
			while (set.size() < n) {
				set.add(cRandom(m));
			}
			return set;
		}
	}
	
	public static String cRandom(int m) { 
		// 产生1个长度为m只含有字母的随机字符串
		char[] chs = new char[m];
		for (int i = 0; i < m; i++) {
			chs[i] = cNumOrCharRandom();
		}
		return new String(chs);
	}
	
	public static char cNumOrCharRandom() { 
		// 产生一个随机数字或字母
		String temp = "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
		return (char) temp.charAt(iRandom(0, 61));
	}
	
	public static int iRandom(int m, int n) { 
		// 产生一个[m,n)之间的随机整数
		Random random = new Random();
		int small = m > n ? n : m;
		int big = m <= n ? n : m;
		return small + random.nextInt(big - small);
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值