为什么Random.nextInt()和Math.random超出我设置的范围?

时间:2019-03-16 23:41:51

标签: java random

所以我需要获得25到75之间的随机数,并且尝试了两种方法:

System.out.println(random.nextInt(75)+25);
System.out.println((int)(Math.random()*75) + 25);

据我了解,我在两行中写的“ 75”应该是我得到的最大数字,而“ 25”应该是最小的数字。但是,我得到的数字如下:

84,94,82,79,98 // these are only the numbers that went out of range

我想我误解了nextInt和Math.random的规则。如何获取我想要的数字(介于25和75之间)?

2 个答案:

答案 0 :(得分:1)

示例的范围是25100,因为您将结果加了25。您想要类似的东西

System.out.println(random.nextInt(75 - 25) + 25);

因为您想要一个介于050范围内的值,然后通过将二十五加起来将其上移25。

答案 1 :(得分:1)

考虑这一部分:

random.nextInt(75) + 25

您要生成一个介于0到74之间的数字,然后将其加25。这将生成一个从25到99的随机数。如果生成74并加上25,则它变为99。

在生成之前,您需要减去下界:

random.nextInt(75 - 25) + 25)