[英]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 和上限之間的數字。
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 范圍內的隨機數。
通常,我發現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 之間的值
new Random().nextInt(max_num)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.