为什么Random.nextInt()和Math.random超出了我设定的范围? [重复]

问题描述 投票:-6回答:2

这个问题在这里已有答案:

所以我需要得到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之间)?

java random
2个回答
1
投票

想想这部分:

random.nextInt(75) + 25

你生成一个0到74之间的数字,然后加上25.这会产生一个从25到99的随机数。如果它生成74并且你加25,它就变成99。

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

random.nextInt(75 - 25) + 25)

1
投票

您的示例范围是25100,因为您在结果中添加了二十五个。你想要的东西

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

因为你想要一个050范围内的值,然后通过增加二十五来将它向上移动二十五。

© www.soinside.com 2019 - 2024. All rights reserved.