我使用这种方法:
def getRandomNumber(int num){
Random random = new Random()
return random.getRandomDigits(num)
}
当我打电话给它时,我写了println getRandomNumber(4)
但我有错误
No signature of method: java.util.Random.getRandomDigits() is applicable for argument types: (java.lang.Integer) values: [4]
注意:我在另一个groovy类中使用此方法,它正常工作,没有任何错误
答案 0 :(得分:51)
没有java.util.Random.getRandomDigits
这样的方法。
要获取随机数,请使用nextInt:
return random.nextInt(10 ** num)
此外,您应该在应用程序启动时创建随机对象一次:
Random random = new Random()
每次需要新的随机数时,都不应创建新的随机对象。这样做会破坏随机性。
答案 1 :(得分:22)
您可以使用以下内容生成介于1和上限之间的数字。
Math.abs(new Random().nextInt() % [UPPER_LIMIT]) + 1
这是一个具体的例子:
示例 - 生成1到600范围内的伪随机数:
Math.abs(new Random().nextInt() % 600) + 1
这将为您生成一个范围内的随机数。在这种情况下1-600。您可以在整数范围内将值600更改为您需要的任何内容。
如果要使用不等于1的下限,则可以使用以下公式。
Math.abs(new Random().nextInt() % ([UPPER_LIMIT] - [LOWER_LIMIT])) + [LOWER_LIMIT]
这是一个具体的例子:
示例 - 生成40到99范围内的伪随机数:
Math.abs( new Random().nextInt() % (99 - 40) ) + 40
这将生成一个40到99范围内的随机数。
答案 2 :(得分:13)
一般来说,我发现RandomUtils(来自Apache commons lang)比java.util.Random
更容易生成随机数
答案 3 :(得分:3)
如果要生成范围包括“0”的随机数,请使用以下内容,而“max”是范围内的最大数字。
Random rand = new Random()
random_num = rand.nextInt(max+1)
答案 4 :(得分:1)
例如,假设您要创建50到60之间的随机数,可以使用以下方法之一。
new Random().nextInt()%6 +55
new Random()。nextInt()%6 返回介于-5和5之间的值。当您将其添加到55时,您可以获得介于50和60之间的值
第二种方法:
Math.abs(new Random().nextInt()%11) +50
Math.abs(新的Random()。nextInt()%11)创建一个介于0和10之间的值。稍后您可以添加50,其中将为您提供50到60之间的值