1.Java中的方法random()可用于生成随机数,称为伪随机数生成器,它返回一个大于等于0.0、小于1.0的数(double类型),即0.0<=X<1.0 。之因此产生的数称为伪随机数,是由于它并非真正随机的。当咱们重复调用这个方法时,最终生成的数是周期性重复的。所以,理论上,生成的数不随机,但对于实际应用说,它们已经足够随机了。java
但对于大多数应用程序来讲,咱们但愿生成的随机数是整数。所以咱们须要对于这个返回的数值进行转换,指望它落在咱们须要的区间内。不妨假设咱们须要的整数范围是[min, max],若是X是返回的随机数,可使用下面的公式使其转换成Y,使得Y落在区间[min, max]内,即min<=Y<=max。小程序
Y = [X * (max-min+1)] + mindom
对于不少应用程序来讲,min的值是1,因此上式可简化为:spa
Y = (X * max) + 1code
能够用下面的语句表达上面的通用公式:blog
int randomNumber = (int) (Math.floor(Math.random() * (max - min + 1)) + min);
实例(1):咱们来编写一个小程序,要选出一个每一年一届的春季交谊舞联欢会的中奖者,联欢会的参加者将会获得诸如M+一、M+二、M+3之类的数字进入场地。数字M的开始值由联欢会的主席肯定,若是有N个选手参加,最后一个数字就是M+N。晚会的最后,咱们将运行这个程序,从M+1到M+N中随机选择一个中奖者:class
1 import java.util.*; 2 3 class Random_test{ 4 public static void main(String[] args){ 5 int startingNumber, count, winningNumber, min, max; 6 7 Scanner scan = new Scanner(System.in); 8 9 System.out.print("Enter the starting number: "); 10 startingNumber = scan.nextInt(); 11 12 System.out.print("Enter the number of party goers: "); 13 count = scan.nextInt(); 14 15 min = startingNumber + 1; 16 max = startingNumber + count; 17 18 winningNumber = (int) (Math.floor(Math.random() * (max - min + 1)) + min); 19 20 System.out.print("\nThe Winning Number is " + winningNumber); 21 } 22 }
运行程序结果符合预期:test
2.Java中的Random类生成随机数实例,用到Random类中的nextInt(int)方法。例如Random random = new Random() ,代码random.nextInt(100)表示生成0-100之间的随机整数,包括0但不包括100,下面例子随机得到5个[1,100]的值:import
1 import java.util.*; 2 3 class Random_test{ 4 public static void main(String[] args){ 5 Random random = new Random(); 6 for(int i=0; i<5; i++) { 7 System.out.print(random.nextInt(100) + 1 + "\n"); 8 } 9 } 10 }
运行结果符合预期:随机数
生成区间[34,67]随机数可表示:random.nextInt(34)+34
能够总结为:
int randomNumber = random.nextInt(max - min + 1) + min;