簡體   English   中英

如何在 groovy 中使用隨機數?

[英]How can I use random numbers in groovy?

我使用這種方法:

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 class 中使用此方法,它可以正常工作,沒有任何錯誤。

沒有像java.util.Random.getRandomDigits這樣的方法。

要獲得隨機數,請使用 nextInt:

return random.nextInt(10 ** num)

您還應該在應用程序啟動時創建一次隨機對象:

Random random = new Random()

你不應該每次想要一個新的隨機數時都創建一個新的隨機對象。 這樣做會破壞隨機性。

生成介於 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 范圍內的隨機數。

通常,我發現RandomUtils (來自 Apache commons lang)比java.util.Random更容易生成隨機數

如果要生成包括 '0' 范圍內的隨機數,請使用以下命令,而 'max' 是該范圍內的最大數。

Random rand = new Random()
random_num = rand.nextInt(max+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(new Random().nextInt()%11)創建一個介於 0 和 10 之間的值。稍后您可以添加 50,它會給您一個介於 50 和 60 之間的值

最簡單的方法:生成0到(max_num-1)之間的隨機數

new Random().nextInt(max_num)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM