Java 随机整数-正整数和负整数

Java 随机整数-正整数和负整数,java,random,integer,Java,Random,Integer,我想知道如何获得integer.MIN_值和integer.MAX_值之间的随机整数。我确实试过: int min = Integer.MIN_VALUE; int max = Integer.MAX_VALUE; Random rand = new Random(); StartVärde = rand.nextInt(max - min + 1) + min; 请注意,我已经导入了java.util.Random,“StartVärde”只是我创建的一个变量。现在,上面的代码给出以下错

我想知道如何获得integer.MIN_值和integer.MAX_值之间的随机整数。我确实试过:

int min = Integer.MIN_VALUE;
int max = Integer.MAX_VALUE;

Random rand = new Random();
StartVärde =  rand.nextInt(max - min + 1) + min;
请注意,我已经导入了java.util.Random,“StartVärde”只是我创建的一个变量。现在,上面的代码给出以下错误消息:

Exception in thread "main" java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Random.java:265)
at Räknare.<init>(Räknare.java:28)
at Räknare_Main.main(Räknare_Main.java:5)
线程“main”java.lang.IllegalArgumentException中的异常:n必须为正 位于java.util.Random.nextInt(Random.java:265) 在Räknare.(Räknare.java:28) 在Räknare_Main.Main(Räknare_Main.java:5) 来自Java.util.Random的Java文档:

All 2^32 possible int values are produced with (approximately) equal probability.
你可能想试试

StartVärde =  rand.nextInt();

默认情况下,它将产生正随机数和负随机数。

您只需使用
rand.nextInt()
。它将返回一个32位的随机
int
。因为在Java中,int被解释为有符号的,所以您将得到正值和负值

更多信息:

来自javadoc的

从中返回下一个伪随机、均匀分布的int值 这个随机数发生器的序列。工程总承包 nextInt是一个int值是伪随机生成的,并且 返回。所有232个可能的int值都是用 (近似)等概率


因此,如果使用
Random.nextInt()
is将返回一个介于
Integer.MIN\u value
Integer.MAX\u value

之间的值,请参见下面的答案。此外,原因是max-min不适合整数,因此不能传递给nextInt。如果您想要更大范围的内容,请使用nextLong()。此外,变量名中的特殊字符可能会出现问题。如果我是你,我会将
StartVärde
重命名为
startVaerde
(由于Java命名约定,小写)。不,你需要
Random.nextInt()
not
Random.nextInt(int n)