为什么 Random.nextInt() 和 Math.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之间)?


精慕HU
浏览 588回答 2
2回答

九州编程

想想这部分:random.nextInt(75) + 25您正在生成一个介于 0 和 74 之间的数字,然后加上 25。这将生成一个从 25 到 99 的随机数。如果它生成 74,而您添加 25,则它变为 99。您需要在生成之前减去下限:random.nextInt(75 - 25) + 25)

饮歌长啸

您的示例的范围是,因为您在结果中添加了二十五。你想要这样的东西25100System.out.println(random.nextInt(75 - 25) + 25);因为你想要一个范围中的值,然后通过添加二十五个来将它向上移动二十五个。050
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java