java⽣成随机数——六位随机数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));
}
String();
}
/
**
* ⽅案⼆:随机出来的数乘上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) 内部⼜要调⽤pyOfRange(value, offset,
* offset+count) ⽅法
*
* pyOfRange(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) {
java生成随机数的方法getRandNumber1();
}
if (n == 2) {
getRandNumber2();
}
if (n == 3) {
getRandNumber3();
}
}
long end = System.currentTimeMillis();
System.out.println(("getRandNumber" + n + ": ") + (end - start)); }
}
不知道⽅案⼆还能不能优化下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论