2010-11-22 15 views
22

Io uso questo metodo:come posso usare numeri casuali in groovy?

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

quando lo chiamo io scrivo println getRandomNumber(4)

ma ho un errore

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

Nota: Io uso questo metodo in un'altra classe Groovy e funziona correttamente senza errori

risposta

41

Non esiste un metodo come java.util.Random.getRandomDigits.

Per ottenere un casuale Usa numero nextInt:

return random.nextInt(10 ** num) 

Inoltre si dovrebbe creare l'oggetto casuale volta all'avvio dell'applicazione:

Random random = new Random() 

Non si deve creare un nuovo oggetto a caso ogni tempo che vuoi un nuovo numero casuale. Fare questo distrugge la casualità.

+0

grazie, nota: ho usato getRandomDigits() in un'altra classe groovy e funziona correttamente senza errori. puoi cercare su questo metodo qualsiasi vedi il suo effetto –

+0

'getRandomDigits()' non esiste su java.util.Random come scritto da @ mark-byers. A quale classe ti riferisci? – youri

12

In generale, trovo RandomUtils (da Apache Commons Lang) un modo più semplice per generare numeri casuali di java.util.Random

10

Io uso il seguente:

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

Questo genererà un numero casuale all'interno di un intervallo per tu. In questo caso 1-600. Puoi cambiare il valore 600 in qualunque cosa tu abbia bisogno nell'intervallo di numeri interi.

+0

Leggera correzione: Math.abs (nuovo casuale(). NextInt()% 600) + 1. In caso contrario, è possibile ottenere un risultato mod di -1 e un risultato fuori intervallo di 0 anziché il valore corretto di 2. –

+0

Grazie . Questo era stato aggiornato. – anataliocs

1

Ad esempio, supponiamo di voler creare un numero casuale compreso tra 50 e 60, è possibile utilizzare uno dei seguenti metodi. .

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

new Random() nextInt()% 6 restituisce un valore compreso tra -5 e 5. e quando si aggiunge a 55 è possibile ottenere valori compresi tra 50 e 60

Secondo metodo:

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

Math.abs (new Random(). nextInt()% 11) crea un valore compreso tra 0 e 10. in seguito è possibile aggiungere 50 che nel vi darà un valore compreso tra 50 e 60