2010-12-08 12 views

Répondre

8

Le follwing fera ce dont vous avez besoin.

Random r = new Random(); 
int randomInt = r.nextInt(5); 

Si vous faites cela dans une boucle, assurez-vous d'initialiser le Random en dehors de la boucle.

Random r = new Random(); 
for(int i = 0;i < someThing; i++) { 
    System.out.println(r.nextInt(5)); 
} 

Voir la documentation de la classe Random: http://download.oracle.com/javase/6/docs/api/java/util/Random.html

2

Une chose à faire attention est que vous ne devez pas créer un nouvel objet au hasard chaque fois que vous voulez un nouveau numéro. Cette ligne doit être exécutée une fois lorsque l'application commence:

Random r = new Random(); 

cela devrait être appelé à chaque fois que vous voulez un nouveau nombre aléatoire:

int x = r.nextInt(5); 
2
System.out.println(""+(int) (Math.random()*5.0)); 

Si vous avez seulement besoin de générer un seul nombre aléatoire, je crois que c'est un peu moins cher d'utiliser le Math.random() que de faire un objet.

Note: pour générer un entier aléatoire de 0 à n, (0 inclus, n exclusif), il suffit d'utiliser:

(int) (Math.random()*n); 

Pour générer un entier aléatoire de m à m + n, (m inclus, m + n exclusive), il suffit d'utiliser:

m + (int) (Math.random()*n); 
+0

Construire une instance de Random n'est pas nécessairement plus cher que votre chemin – ognian

+0

Ognian est correct, et pour clarifier, le premier appel à Math.random() crée en fait un nouvel objet java.util.Random qui sera utilisé par tous appels ultérieurs à Math.random(). –

+0

bon à savoir, merci – nnythm

2

S'il vous plaît payer Attantion - Appeler chaque fois que le code:

Random r = new Random(); 

sera probablement r et vous les mêmes numéros (je suppose que peu d'entre vous ont remarqué que phanamona).

Je suppose que connecté en quelque sorte au problème Java avec des nombres aléatoires: Java: Can (new Random()).nextInt(5) always return the same number? et: Java random always returns the same number when I set the seed?

Quoi qu'il en soit ma solution est d'ajouter une variable statique à ma classe:

static Random sRandomGen = new Random(); 

et appelez le nextInt de la méthode appropriée quand j'ai besoin du nombre aléatoire. De cette façon, je reçois une répartition égale entre les résultats.

int rnd = sRandomGen.nextInt(numofmatches - 1); 

Cette solution fonctionne très bien pour moi.