web-dev-qa-db-ja.com

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クラスで使用し、エラーなしで適切に動作します

34

Java.util.Random.getRandomDigits のようなメソッドはありません。

乱数を取得するには、nextIntを使用します。

return random.nextInt(10 ** num)

また、アプリケーションの起動時にランダムオブジェクトonceを作成する必要があります。

Random random = new Random()

新しい乱数が必要になるたびに、新しいランダムオブジェクトを作成しないでください。これを行うと、ランダム性が破壊されます。

55
Mark Byers

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の範囲内の乱数が生成されます。

21
anataliocs

一般的に、私は RandomUtils (Apache commons langから)Java.util.Random

13
Dónal

'0'を含む範囲で乱数を生成する場合は、次を使用します。'max 'は範囲内の最大数です。

Random Rand = new Random()
random_num = Rand.nextInt(max+1)
3
linuxmaniac

たとえば、50〜60の乱数を作成するとします。次のいずれかの方法を使用できます。

new Random().nextInt()%6 +55

new Random()。nextInt()%6は-5〜5の値を返します。55に追加すると、50〜60の値を取得できます

2番目の方法:

Math.abs(new Random().nextInt()%11) +50

Math.abs(new Random()。nextInt()%11)は0〜10の値を作成します。後で50を追加して、50〜60の値を取得できます

1
Etibar Hasanov