Java生成两个给定值之间的随机数

我想知道如何在两个给定值之间生成一个随机数。

我能够生成一个随机数与以下:

Random r = new Random();


for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[i].length; j++){
a[i][j] = r.nextInt();
}


}

但是,如何生成0到100(包括)之间的随机数呢?

901041 次浏览

你可以使用例如r.nextInt(101)

对于更通用的“在两个数字之间”使用:

Random r = new Random();
int low = 10;
int high = 100;
int result = r.nextInt(high-low) + low;

这将为您提供一个介于10(包含)和100(不包含)之间的随机数

使用Random.nextInt (int)

在你的例子中,它看起来是这样的:

a[i][j] = r.nextInt(101);
int Random = (int)(Math.random()*100);

如果你需要生成多个值,那么只需使用 For循环

 for (int i = 1; i <= 10 ; i++)
{
int Random = (int)(Math.random()*100);
System.out.println(Random);
}

如果你想指定一个更合适的范围,比如从10到100(两者都在这个范围内)

所以代码是:

   int Random =10 +  (int)(Math.random()*(91));
/* int Random = (min.value ) + (int)(Math.random()* ( Max - Min + 1));
*Where min is the smallest value You want to be the smallest number possible to
generate and Max is the biggest possible number to generate*/

Java不像Python那样在两个值之间有一个随机生成器。它实际上只需要一个值来生成Random。然后,您需要做的是将一个特定的数字添加到生成的数字中,这将使该数字在一个范围内。例如:

package RandGen;


import java.util.Random;


public class RandGen {




public static Random numGen =new Random();


public static int RandNum(){
int rand = Math.abs((100)+numGen.nextInt(100));


return rand;
}


public static void main(String[]Args){
System.out.println(RandNum());
}

这个程序的功能完全位于第6行(以“int rand…”开头的那行)。请注意Math.abs()只是将数字转换为绝对值,并声明为int型,这并不重要。第一个(100)是我要加到随机数字上的数字。这意味着新的输出数将是随机数+ 100。numGen.nextInt()是随机数本身的值,因为我把(100)放在括号里,所以它是1到100之间的任何数字。所以当我加100时,它就变成了101到200之间的数。实际上,你并不是在生成一个100到200之间的数字,而是在对1到100之间的数字进行加法。

你也可以试试下面的方法:

public class RandomInt {
public static void main(String[] args) {


int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
double Random;


if (n1 != n2)
{
if (n1 > n2)
{
Random = n2 + (Math.random() * (n1 - n2));
System.out.println("Your random number is: " + Random);
}
else
{
Random = n1 + (Math.random() * (n2 - n1));
System.out.println("Your random number is: " +Random);
}
} else {
System.out.println("Please provide valid Range " +n1+ " " +n2+ " are equal numbers." );
}
}
}

假设上界是上界,下界是下界,那么你可以在两个上界之间做一个随机数r:

int r = (int) (Math.random() * (upper - lower)) + lower;

像这样,

Random random = new Random();
int randomNumber = random.nextInt(upperBound - lowerBound) + lowerBound;