首页 > 编程 > Java > 正文

java生成随机数——六位随机数

2019-11-08 01:16:48
字体:
来源:转载
供稿:网友

package com.nit.superlu.Junit;public class Test6 {	public static void main(String[] args) {		run(1);		run(2);		run(3);	}	/**	 * 方案一:逐位随机取值,转成字符串,然后再拼接成6位的字符串	 * 	 * @return 6位字符串	 */	public static String getRandNumber1() {		StringBuffer numStr = new StringBuffer();		int num;		for (int i = 0; i < 6; i++) {			// Math.random() 随机出0-1之间的实数,返回值是一个double 类型的			num = (int) (Math.random() * 10);			numStr.append(String.valueOf(num));		}		return numStr.toString();	}	/**	 * 方案二:随机出来的数乘上900000 得到一个0-900000的数,再加上100000就得到100000-1000000的六位数	 * 	 * 弊端:第一位为0的情况被排除	 * 	 * 	 * @return 最多6位的整数	 */	public static int getRandNumber2() {		int num = (int) (Math.random() * 900000) + 100000;		return num;	}	/**	 * 方案三:将随机出来的数,直接转成字符串,然后截取小数点后六位。	 * 	 * 弊端:效率较低,	 * 	 * 因为调用substring(int beginIndex, int endIndex) 时,它内部又需要调用String(value,	 * beginIndex, subLen) 构造器	 * 	 * String(value, beginIndex, subLen) 内部又要调用Arrays.copyOfRange(value, offset,	 * offset+count) 方法	 * 	 * Arrays.copyOfRange(value, offset, offset+count) 内部又调用了一个方法,这个方法的实现不是用java	 * 编写的,然后才返回结果	 * 	 * 一圈下来所以耗费时间	 * 	 * @return 六位的字符串	 */	public static String getRandNumber3() {		String numStr;		numStr = String.valueOf(Math.random());		// subString(int begin,int end); 截取[begin,end)范围内的字符串		return numStr.substring(2, 8);	}	/**	 * 测试一下每个函数运行的效率,循环个10万次	 * 	 * @param n	 *            指定哪个函数	 */	public static void run(int n) {		long start = System.currentTimeMillis();		for (int i = 0; i < 1000000; i++) {			if (n == 1) {				getRandNumber1();			}			if (n == 2) {				getRandNumber2();			}			if (n == 3) {				getRandNumber3();			}		}		long end = System.currentTimeMillis();		System.out.PRintln(("getRandNumber" + n + ": ") + (end - start));	}}

不知道方案二还能不能优化下


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表