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

Java Generate Random Number Between Two Given Values

本问题已经有最佳答案,请猛点这里访问。

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

我可以生成一个随机数,包括:

1
2
3
4
5
6
7
8
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之间(包括0和100)的随机数?


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

对于更通用的"介于两个数字之间"使用:

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

这会给您一个介于10(含)和100(不含)之间的随机数。


假设上限为上限,下限为下限,则可以在两个边界之间生成一个随机数r,其中:

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


1
int Random = (int)(Math.random()*100);

如果需要生成多个值,则只需使用为了那个循环

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

如果要指定更合适的范围,如从10到100(两者都在范围内)

所以代码是:

1
2
3
4
   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*/


这样地,

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

使用random.nextint(int)。

在您的情况下,它看起来像这样:

1
a[i][j] = r.nextInt(101);

您还可以尝试以下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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." );
        }                    
    }
}


Java与Python一样,没有两个值之间的随机生成器。它实际上只需要输入一个值来生成随机值。然后,您需要做的是在生成的数字中添加一个特定的数字,这将导致数字在一个范围内。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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之间的数字相加。