两种产生随机数的方法:
一)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
浙公网安备 33010602011771号