web-dev-qa-db-fra.com

comment puis-je utiliser des nombres aléatoires dans groovy?

J'utilise cette méthode:

def getRandomNumber(int num){
    Random random = new Random()
    return random.getRandomDigits(num)
}

quand je l'appelle j'écris println getRandomNumber(4)

mais j'ai une erreur

No signature of method: Java.util.Random.getRandomDigits() is applicable for argument types: (Java.lang.Integer) values: [4]

Remarque: j'utilise cette méthode dans une autre classe groovy et elle fonctionne correctement sans aucune erreur

34
Georgian Citizen

Il n'existe pas de méthode telle que Java.util.Random.getRandomDigits .

Pour obtenir un nombre aléatoire, utilisez nextInt:

return random.nextInt(10 ** num)

Vous devez également créer l'objet aléatoire une fois au démarrage de votre application:

Random random = new Random()

Vous ne devez pas créer un nouvel objet aléatoire chaque fois que vous souhaitez un nouveau nombre aléatoire. Faire cela détruit le caractère aléatoire.

55
Mark Byers

Générez des nombres pseudo aléatoires entre 1 et un [UPPER_LIMIT]

Vous pouvez utiliser ce qui suit pour générer un nombre compris entre 1 et une limite supérieure.

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

Voici un exemple précis:

Exemple - Générez des nombres pseudo aléatoires compris entre 1 et 600:

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

Cela générera pour vous un nombre aléatoire dans une plage. Dans ce cas, 1-600. Vous pouvez remplacer la valeur 600 par tout ce dont vous avez besoin dans la plage d'entiers.


Générez des nombres pseudo aléatoires entre un [LOWER_LIMIT] et un [UPPER_LIMIT]

Si vous souhaitez utiliser une borne inférieure qui n'est pas égale à 1, vous pouvez utiliser la formule suivante.

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

Voici un exemple précis:

Exemple - Générez des nombres pseudo aléatoires dans la plage de 40 à 99:

Math.abs( new Random().nextInt() % (99 - 40) ) + 40

Cela générera un nombre aléatoire dans une plage de 40 et 99.

21
anataliocs

En général, je trouve RandomUtils (de Apache commons lang) un moyen plus facile de générer des nombres aléatoires que Java.util.Random

13
Dónal

Si vous souhaitez générer des nombres aléatoires dans la plage, y compris "0", utilisez ce qui suit tandis que "max" est le nombre maximal dans la plage.

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

Par exemple, supposons que vous souhaitiez créer un nombre aléatoire compris entre 50 et 60, vous pouvez utiliser l'une des méthodes suivantes.

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

new Random (). nextInt ()% 6 renvoie une valeur comprise entre -5 et 5. et lorsque vous l'ajoutez à 55, vous pouvez obtenir des valeurs comprises entre 50 et 60

Deuxième méthode:

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

Math.abs (new Random (). NextInt ()% 11) crée une valeur entre 0 et 10. Plus tard, vous pouvez ajouter 50 qui dans le vous donnera une valeur entre 50 et 60

1
Etibar Hasanov