我如何在groovy中使用随机数?

时间:2010-11-22 09:53:53

标签: groovy random

我使用这种方法:

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类中使用此方法,它正常工作,没有任何错误

5 个答案:

答案 0 :(得分:51)

没有java.util.Random.getRandomDigits这样的方法。

要获取随机数,请使用nextInt:

return random.nextInt(10 ** num)

此外,您应该在应用程序启动时创建随机对象一次

Random random = new Random()

每次需要新的随机数时,都不应创建新的随机对象。这样做会破坏随机性。

答案 1 :(得分:22)

生成1和[UPPER_LIMIT]

之间的伪随机数

您可以使用以下内容生成介于1和上限之间的数字。

Math.abs(new Random().nextInt() % [UPPER_LIMIT]) + 1

这是一个具体的例子:

示例 - 生成1到600范围内的伪随机数:

Math.abs(new Random().nextInt() % 600) + 1

这将为您生成一个范围内的随机数。在这种情况下1-600。您可以在整数范围内将值600更改为您需要的任何内容。


在[LOWER_LIMIT]和[UPPER_LIMIT]

之间生成伪随机数

如果要使用不等于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之间的值