如何用math.random()生成一个包含最小值和最大值的数?

nle07wnf  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(804)

这个问题在这里已经有答案了

如何在java中生成特定范围内的随机整数(67个答案)
java:在一个范围内生成一个随机双精度(包括范围的最小值和最大值)(6个答案)
上个月关门了。
我用的是 Math.random()*(max-min))+min 但这都是独家的。我怎样才能使它具有包容性?解决这个问题的方法是什么?
我试过了 Math.random()*(max-min))+min 直到我意识到这一切都是排他性的。我想弄清楚为什么要用min来做这个。我也试过了 Math. random() * (max - min + 1) + min 但这使得上层社会具有包容性。
简单地说:我怎么能用 Math.random() 从最小值(包含)到最大值(排除)生成数字?

rslzwgfq

rslzwgfq1#

您可以尝试查看math.random()(max min+1)+min将其转换为int,因为它返回双倍值(int)(math.random()(max min+1))+min

hc2pp10m

hc2pp10m2#

Math.random() 返回一个带正号的双精度值,大于或等于 0.0 小于等于 1.0 .
假设最小值=10,最大值=20 Math.random() * (max - min) = Math.random() * 10 =>来自 0 小于 10 .
所以,如果你想知道 010 (包括),您必须添加 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 =(来自 010 ) + 10 =来自 1020

相关问题