Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在两个给定值之间生成随机数_Java_Random_Numbers - Fatal编程技术网

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

Java在两个给定值之间生成随机数,java,random,numbers,Java,Random,Numbers,我想知道如何在两个给定值之间生成一个随机数 我能够生成具有以下内容的随机数: 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(); } } Random r=new Random(); for(int i=0;i

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

我能够生成具有以下内容的随机数:

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();
    }

}
Random r=new Random();
for(int i=0;i

但是,如何生成介于0和100(含)之间的随机数?

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

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

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

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

a[i][j] = r.nextInt(101);
如果您需要生成多个值,那么只需使用 为了那件事

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

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

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;

谢谢-我试过了,但似乎不起作用。我使用的是0到100(含)的随机数填充多维数组;尝试此操作时,它会用非常大和非常小的数字填充数组。例如,-3.76556749E8 3.0207573E8 2.033182079E9-6.86227134E8。显示其余的代码。例如,
a
。您可以发布如何调用
r.nextInt()
以及使用哪些值?@Thomas
Random r=new Random();System.out.println(r.nextInt(高-低)+Low);
关于Java命名约定,变量名应该以小写字符开头。有点冗长和笨拙。您不需要重复该代码,只需要决定是否先使用n1或n2的值。关于Java命名约定,变量名应该以小写字符开头,可能有点晚,and它总是绑定到意见和代码样式,但通常您不会创建大写的变量,因此最好将其命名为“random”而不是“random”。类通常使用大写:)如果max为Integer.max_值,min为0,则此操作将失败。使用Math.round而不是强制转换为int来解决这个问题。根据Java命名约定,变量名应该以小写字符开头。这是upperint r=(Math.random()*(upper-lower))+lower所独有的;这将包括较低的费用。这可能会有帮助。
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." );
        }                     
    }
}
int r = (int) (Math.random() * (upper - lower)) + lower;
Random random = new Random();
int randomNumber = random.nextInt(upperBound - lowerBound) + lowerBound;