Java学习之生成随机数

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;
相关文章
相关标签/搜索