您的位置:首页 > 编程语言 > Java开发

JAVA常用类之——Math和Random

2015-07-20 10:57 555 查看
JAVA常用类之——Math和Random

关于Random,它提供了两个构造方法:
public Random() 该方法采用默认的种子,系统当前时间的ms数。
public Random(long seed) 该方法采用seed为种子。

Random实际是伪随机数,如果两个Random对像的种子相同,获取数值的方法和顺序相同,那就会得到相同的随机数。通常采用系统的当前时间作为种子:
Random r = new Random(System.currentTimeMillis);

Math类是一个数学运算的工具类,它有大量的方法不在一一叙述,但是它也有一个好玩的random方法,也是产生一个随机数,只不过这个随数限定为0.0 - 1.0 之间的double类型。

问题来了,请编写一个方法用于产生start和end之间的随机数,方法声明如下:
public int getRandom(int start, int end);

想一下,这个好像用Random也是完不成的,它大概只能产生[0 - nextInt(end))这个左开右闭的区间的值。

让我们的Math.random方法登场吧:
public static int getRandom(int start,int end){

return (int)(Math.random()*(end-start+1) + start);
}

public static void main(String[] args)
{
Scanner in = new Scanner(System.in);

while(true){

//请输入年
System.out.println("请输入开始值:");
int start = in.nextInt();
System.out.println("请输入结束值:");
int end = in.nextInt();

//输出产生的随机数
for(int i=start; i<end; i++){
int res = getRandom(start,end);
System.out.println(res);
}
}
}


对于getRandom(start,end)方法,实际上就是一道小学数学题。Math.random产生0.0 - 1.0之间的数值,所以现在问题就是求X1 - X2之间的随机值,增量(X2-X1)*随机量即可。
Math.random(X2 - X1) + X1

玩过之后看JDK7新增的一个类: ThreadLocalRandom,这是一个线程安全的类,它也有一个功能是nextXXXX方法集可以指定产生随机数的区间:
ThreadLocalRandom rand = ThreadLocalRandom.current();
System.out.println(rand.nextInt(100, 200));
首先,用该类的静态方法current()来获得ThreadLocalRandom对像,然后就可以随心所欲的产生随机数了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: