0

我想知道如何获得 Integer.MIN_VALUE 和 Integer.MAX_VALUE 之间的随机整数。我确实试过这个:

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)
4

3 回答 3

4

来自 javadocRandom.nextInt()

从该随机数生成器的序列中返回下一个伪随机、均匀分布的 int 值。nextInt 的一般约定是伪随机生成并返回一个 int 值。所有 2 32 个可能的 int 值都是以(大约)相等的概率产生的。

所以,如果你使用Random.nextInt()is 将返回一个介于Integer.MIN_VALUEand之间的值Integer.MAX_VALUE

于 2013-06-02T19:33:41.843 回答
3

您可以简单地使用rand.nextInt()。它将返回一个随机int的 32 位。由于在 Javaint中被解释为有符号,因此您将获得正值和负值。

更多信息 :

于 2013-06-02T19:33:11.997 回答
1

来自 java.util.Random 的nextInt()的 Java 文档:

All 2^32 possible int values are produced with (approximately) equal probability.

你可能想试试

StartVärde =  rand.nextInt();

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

于 2013-06-02T19:33:02.260 回答