当前位置:编程学习 > JAVA >>

浅析Java中产生随机数的方式

在java中,我们可以通过两种方式来获取随机数(generating a random number)一种是大家熟悉的java.lang.Math.Random()静态方法,另一种是创建java.util.Random对象。下面是两种方法的使用过程:
1. java.lang.Math.random()
在使用这一静态方法的时候,我们不需要import任何包,因为java.lang.*包是默认载入的,下面举例说明:
[java] 
package com.luiszhang.test; 
 
public class RandomTest { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
         
        //random()会自动产生一个0.0-1.0的双精度随机数 
        double doubleRadomNum = Math.random(); 
        System.out.println(doubleRadomNum); 
        //产生0-1000的双精度随机数 
        doubleRadomNum = Math.random() * 1000; 
        System.out.println(doubleRadomNum); 
         
        //产生0-1000的整数随机数 
        int intRandomNum = (int) (Math.random() * 1000); 
        System.out.println(intRandomNum); 
    } 
 

2. 创建java.util.Random对象
[java] 
package com.luiszhang.test; 
 
import java.util.Random; 
 
public class RandomTest { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // 创建random对象 
        Random random = new Random(); 
        //获取一个整型随机数 
        int intNumber = random.nextInt(); 
        //获取一个浮点随机数(0-1) 
        float floatNumber = random.nextFloat(); 
        //获取双精度随机数(0-1) 
        double doubleNumber = random.nextDouble(); 
        //获取boolean随机数 
        boolean booleanNumber = random.nextBoolean(); 
         
        System.out.println("intNumber:" + intNumber); 
        System.out.println("floatNumber:" + floatNumber); 
        System.out.println("doubleNumber:" + doubleNumber); 
        System.out.println("booleanNumber:" + booleanNumber); 
    } 
 

说明:
(1)我们可以通过System.currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内啦。(在循环中易产生重复值,不好用)
(2)Random random = new Random();不指定基数,此种方式将会返回随机的数字,每次运行结果不一样。当然我们也可以指定基数,例如:Random random=new Random(100);同一基数所产生的随机数序列是一样的。
下面我们将写测试程序对这些进行验证:
[java]
package com.luiszhang.test; 
import java.util.Random; 
 
public class RandomTest { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // 以100为基数创建两个随机数 
        Random randomNumber1 = new Random(100); 
        Random randomNumber2 = new Random(100); 
         
        // 验证同一基数生成的Random对象产生的随机数是否相等 
        for(int i = 0; i < 5; i++) { 
            System.out.print(randomNumber1.nextInt() + " "); 
            System.out.print(randomNumber2.nextInt() + "\n"); 
            System.out.println("Is equal is " + (randomNumber1.nextInt() == randomNumber2.nextInt())); 
            System.out.println("------------------------------"); 
             
            System.out.print(randomNumber1.nextDouble() + " "); 
            System.out.print(randomNumber2.nextDouble() + "\n"); 
            System.out.println("Is equal is " + (randomNumber1.nextDouble() == randomNumber2.nextDouble())); 
            System.out.println("------------------------------"); 
             
            System.out.print(randomNumber1.nextFloat() + " "); 
            System.out.print(randomNumber2.nextFloat() + "\n"); 
            System.out.println("Is equal is " + (randomNumber1.nextFloat() == randomNumber2.nextFloat())); 
            System.out.println("------------------------------"); 
             
            System.out.print(randomNumber1.nextBoolean() + " "); 
            System.out.print(randomNumber2.nextBoolean() + "\n"); 
            System.out.println("Is equal is " + (randomNumber1.nextBoolean() == randomNumber2.nextBoolean())); 
            System.out.println("------------------------------"); 
        } 
         
         
    // 以当前时间自己生成随机数,随机数范围为1-32 
        for(int i = 0; i < 5; i++) { 
       &
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,