在Android中如何生成特定范围内的随机数?

288

我想在特定范围内生成随机数(例如65到80之间的范围)。

我尝试了以下代码,但它并不是很有用。它也会返回大于最大值(大于80)的值。

Random r = new Random();
int i1 = (r.nextInt(80) + 65);

我该如何生成指定范围内的随机数?


1
使用Kotlin 你可以这样做:val r = (0..10).random() - Mahozad
你可以写val randomNumber = (min..max).random(),其中minmax是指定范围的边界。参考Kotlin – 在特定范围内生成随机数 - arjun
2个回答

523
Random r = new Random();
int i1 = r.nextInt(80 - 65) + 65;

这将返回一个介于65(包括)和80(不包括)之间的随机整数,可能是其中之一:65、66、...、78、79


3
无法处理负数。 - Kirill Kulakov
7
如果你需要一个负数,可以使用这个数并乘以-1。我认为你需要一个浮点数。 - Allison
@Sirens:他甚至可以生成另外两个数字,然后计算它们之间的差值(可能为负数或正数;),最后再乘以原始的随机数 ;) - TomeeNS
2
尽可能简单:int myRandomInt = new Random().nextInt(80 - 65) + 65; - Alecs
8
我已经以某种方式使用Java写了大约8年,每当我需要的时候,我仍然会复制并粘贴这段代码,谢谢。 - Saik Caskey
显示剩余3条评论

308
int min = 65;
int max = 80;

Random r = new Random();
int i1 = r.nextInt(max - min + 1) + min;

请注意,nextInt(int max)返回的是一个介于0(包括)和max(不包括)之间的整数,因此需要加上+1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接