2010-11-22 14 views
22

J'utilise cette méthode:comment puis-je utiliser des nombres aléatoires dans groovy?

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

quand je l'appelle-je écrire 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] 

Note: J'utilise cette méthode dans une autre classe groovy et il fonctionne correctement sans aucune erreur

Répondre

41

Il n'existe aucune méthode telle que java.util.Random.getRandomDigits.

Pour obtenir une utilisation de nombres aléatoires nextInt:

return random.nextInt(10 ** num) 

Aussi, vous devez 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 temps que vous voulez un nouveau nombre aléatoire. Faire cela détruit l'aléatoire.

+0

merci, note: j'ai utilisé getRandomDigits() dans une autre classe groovy et cela fonctionne correctement sans aucune erreur. vous pouvez rechercher sur cette méthode tout voir son effet –

+0

'getRandomDigits()' n'existe pas sur java.util.Random comme @ mark-byers a écrit. De quelle classe parlez-vous? – youri

12

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

10

J'utilise les éléments suivants:

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

Cela va générer un nombre aléatoire dans une plage de toi. Dans ce cas 1-600. Vous pouvez changer la valeur 600 pour tout ce dont vous avez besoin dans la gamme des entiers. Par exemple, supposons que vous vouliez créer un nombre aléatoire entre 50 et 60, vous pouvez utiliser l'une des méthodes suivantes:

+0

Légère correction: Math.abs (nouveau Random(). NextInt()% 600) + 1. Sinon, vous pouvez obtenir un résultat mod de -1 et un résultat hors plage de 0 plutôt que la valeur correcte de 2. –

+0

Merci . Cela avait été mis à jour. – anataliocs

1

.

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

new Random() nextInt()% 6 renvoie une valeur entre -5 et 5. et quand vous 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 comprise entre 0 et 10. Plus tard, vous pouvez ajouter 50 qui vous en donnera une valeur comprise entre 50 et 60