Java学习之生成随机数
Posted 战术鬼才
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习之生成随机数相关的知识,希望对你有一定的参考价值。
1.Java中的方法random()可用于生成随机数,称为伪随机数生成器,它返回一个大于等于0.0、小于1.0的数(double类型),即0.0<=X<1.0 。之所以产生的数称为伪随机数,是因为它并不是真正随机的。当我们重复调用这个方法时,最终生成的数是周期性重复的。因此,理论上,生成的数不随机,但对于实际应用说,它们已经足够随机了。
但对于大多数应用程序来说,我们希望生成的随机数是整数。因此我们需要对于这个返回的数值进行转换,期望它落在我们需要的区间内。不妨假设我们需要的整数范围是[min, max],如果X是返回的随机数,可以使用下面的公式使其转换成Y,使得Y落在区间[min, max]内,即min<=Y<=max。
Y = [X * (max-min+1)] + min
对于很多应用程序来说,min的值是1,所以上式可简化为:
Y = (X * max) + 1
可以用下面的语句表达上面的通用公式:
int randomNumber = (int) (Math.floor(Math.random() * (max - min + 1)) + min);
实例(1):我们来编写一个小程序,要选出一个每年一届的春季交谊舞联欢会的中奖者,联欢会的参加者将会得到诸如M+1、M+2、M+3之类的数字进入场地。数字M的开始值由联欢会的主席确定,如果有N个选手参加,最后一个数字就是M+N。晚会的最后,我们将运行这个程序,从M+1到M+N中随机选择一个中奖者:
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 }
运行程序结果符合预期:
2.Java中的Random类生成随机数实例,用到Random类中的nextInt(int)方法。例如Random random = new Random() ,代码random.nextInt(100)表示生成0-100之间的随机整数,包括0但不包括100,下面例子随机获得5个[1,100]的值:
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;
以上是关于Java学习之生成随机数的主要内容,如果未能解决你的问题,请参考以下文章