这个问题在这里已经有答案了:
如何在java中生成特定范围内的随机整数(67个答案)
java:在一个范围内生成一个随机双精度(包括范围的最小值和最大值)(6个答案)
上个月关门了。
我用的是 Math.random()*(max-min))+min
但这都是独家的。我怎样才能使它具有包容性?解决这个问题的方法是什么?
我试过了 Math.random()*(max-min))+min
直到我意识到这一切都是排他性的。我想弄清楚为什么要用min来做这个。我也试过了 Math. random() * (max - min + 1) + min
但这使得上层社会具有包容性。
简单地说:我怎么能用 Math.random()
从最小值(包含)到最大值(排除)生成数字?
2条答案
按热度按时间rslzwgfq1#
您可以尝试查看math.random()(max min+1)+min将其转换为int,因为它返回双倍值(int)(math.random()(max min+1))+min
hc2pp10m2#
Math.random()
返回一个带正号的双精度值,大于或等于0.0
小于等于1.0
.假设最小值=10,最大值=20
Math.random() * (max - min)
=Math.random() * 10
=>来自0
小于10
.所以,如果你想知道
0
至10
(包括),您必须添加1
也就是说,它应该Math.random() * (max - min + 1)
因此,最终表达式应该是(int)(Math.random() * (max - min + 1)) + min
对于最小值=10和最大值=20,其计算公式为:(int)(Math.random() * (20 - 10 + 1)) + 10
=(int)(Math.random() * 11) + 10
=(来自0
至10
) +10
=来自10
至20