随机整数 - 正面和负面

时间:2013-06-02 19:28:27

标签: java random integer

我想知道如何在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)

3 个答案:

答案 0 :(得分:4)

来自Random.nextInt()

的javadoc
  

返回下一个伪随机数,从中均匀分布的int值   这个随机数发生器的序列。一般合同   nextInt是伪随机生成的一个int值   回。所有2 32 可能的int值都是用   (大约)相等的概率。

因此,如果您使用Random.nextInt(),则会返回Integer.MIN_VALUEInteger.MAX_VALUE之间的值

答案 1 :(得分:3)

您只需使用rand.nextInt()即可。它将返回32位的随机int。由于Java int被解释为已签名,因此您将获得正值和负值。

更多信息:

答案 2 :(得分:1)

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

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

您可能想尝试

StartVärde =  rand.nextInt();

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