web-dev-qa-db-fra.com

Obtenir des nombres aléatoires dans Java

Duplicate possible:
Java: générer un nombre aléatoire dans une plage

Je voudrais obtenir une valeur aléatoire entre 1 et 50 en Java.

Comment puis-je faire cela avec l'aide de Math.random();?

Comment est-ce que je lie les valeurs que Math.random() renvoie?

411
Unknown user

La première solution consiste à utiliser la classe Java.util.Random:

import Java.util.Random;

Random Rand = new Random();

// Obtain a number between [0 - 49].
int n = Rand.nextInt(50);

// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1;

Une autre solution utilise Math.random():

double random = Math.random() * 49 + 1;

ou

int random = (int)(Math.random() * 50 + 1);
669
n_yanev
int max = 50;
int min = 1;

1. Utiliser Math.random ()

double random = Math.random() * 49 + 1;
or
int random = (int )(Math.random() * 50 + 1);

Cela vous donnera une valeur de 1 à 50 en cas d'int ou de 1,0 (inclus) à 50,0 (exclusif) en cas de double

Pourquoi?

la méthode random () renvoie un nombre aléatoire compris entre 0.0 et 0.9 ..., vous le multipliez par 50. La limite supérieure devient donc 0.0 à 49.999 ... lorsque vous ajoutez 1, il devient 1.0 à 50.999 ..., maintenant vous tronquez. pour int, vous obtenez 1 à 50. (merci à @rup dans les commentaires). leepoint's super rédaction sur les deux approches.

2. Utilisation de classes aléatoires en Java.

Random Rand = new Random(); 
int value = Rand.nextInt(50); 

Cela donnera une valeur de 0 à 49.

De 1 à 50: Rand.nextInt((max - min) + 1) + min;

Source d'une certaine Java Awesomeness aléatoire.

584
zengr