两种产生随机数的方法:

一)java.lang.Math 调用Math类中的random()函数。

Math.random()函数能够返回带正号的double值,取值范围[0.0,1.0)的左闭右开区间。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

//随机输出[50,100]的整数
public class RandomTest{
     public static void main(String[] args){
          int r=(int)(Math.random()*50+51);
          System.out.printf("%d\t",r);
     }
}

二)java.util.Random 实例化Random类

//Random() 创建一个新的随机数生成器
//Random(long seed) 使用单个long种子创建一个新的随机数生成器
Random r1=new Random();//默认当前时间的毫秒数作为种子数
Random r2=new Random(20);
//创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。
int i=r2.nextInt(100);
//初始化时20并没有起直接作用,不是没有起作用,r2.nextInt(100);中的100是随机数的上限,产生的随机数为[0,100),不包括100。

当种子数一样时,Random对象生成的随机数序列是一样的。

import java.lang.Math;
import java.util.Random;

public class RandomTest{
     public static void main(String[] args){
          Random r=new Random();
          Random r1=new Random(20);
          Random r2=new Random(20);
          System.out.println("r1 output:");
          for(int i=0;i<5;i++){
              System.out.printf("%d\t",r1.nextInt(100));
          }
          System.out.println();
          System.out.println("r2 output:");
          for(int i=0;i<5;i++){
              System.out.printf("%d\t",r2.nextInt(100));
          }
          System.out.println();
          System.out.println("r output:");
          for(int i=0;i<5;i++){
              System.out.printf("%d\t",r.nextInt(100));
          }
     }
}
//r1对象和r2对象生成随机数序列是一样的

 

 posted on 2018-04-27 18:37  会飞的金鱼  阅读(129)  评论(0)    收藏  举报