Je voudrais obtenir une valeur aléatoire entre 1 et 50 en Java.
Comment puis-je le faire avec l'aide de Math.random();
?
Comment puis-je lier les valeurs que Math.random()
des retours ?
Je voudrais obtenir une valeur aléatoire entre 1 et 50 en Java.
Comment puis-je le faire avec l'aide de Math.random();
?
Comment puis-je lier les valeurs que Math.random()
des retours ?
La première solution est d'utiliser le java.util.Random
classe :
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 consiste à utiliser Math.random()
:
double random = Math.random() * 49 + 1;
ou
int random = (int)(Math.random() * 50 + 1);
Donc si je prends 45 comme minimum et rand.nextInt(50)
retourne 30, j'obtiens une valeur entre 45 et 50 ? Uhm... ok...
La confusion de @DanielF est compréhensible car le commentaire dans la réponse est trompeur. Les 50 dans rand.nextInt(50)
ne donnera que le maximum dans cette situation. rand.nextInt(50)
retournera un nombre entier compris entre 0 (inclusivement) et 50 (exclusivement) (en d'autres termes [0-49]). Nous ajoutons 1 pour obtenir [1-50]. Ainsi, si vous prenez 45 comme minimum et l'ajoutez à rand.nextInt(50), vous obtiendrez une valeur comprise entre 45 et 94 inclusivement.
int max = 50;
int min = 1;
double random = Math.random() * 49 + 1;
or
int random = (int )(Math.random() * 50 + 1);
Cela vous donnera une valeur de 1 à 50 dans le cas de int ou 1.0 (inclus) à 50.0 (exclus) dans le cas d'un double
Pourquoi ?
La méthode random() renvoie une valeur aléatoire aléatoire entre 0,0 et 0,9..., il faut alors le multipliez par 50, donc la limite supérieure devient 0.0 à 49.999... quand vous ajoutez 1, cela devient 1.0 à 50.999..., maintenant quand vous tronquez en int, vous obtenez 1 à 50. (merci à @rup dans les commentaires). de leepoint une rédaction impressionnante sur les deux approches.
Random rand = new Random();
int value = rand.nextInt(50);
Cela donnera une valeur de 0 à 49.
De 1 à 50 ans : rand.nextInt((max - min) + 1) + min;
Source : de quelque Java Random awesomeness.
"0,0 à 50,0, quand on ajoute 1, cela devient 1,0 à 50,0" n'est sûrement pas correct ? Il doit y avoir 49 ou 51 quelque part.
@Blorgbeard la citation est fausse ; le résultat est supérieur ou égal à 0 mais strictement inférieur à 1 ([documentation]( [download.oracle.com/javase/6/docs/api/java/lang/](http://download.oracle.com/javase/6/docs/api/java/lang/Math.html#random()) ). Donc c'est 0.0 à 49.999 etc. qui devient 1 à 50.999 etc. quand on ajoute 1, qui devient 1 à 50 quand on tronque à int.
Il ne fonctionne pas pour toutes les plages par exemple il me donne 31 quand j'ai essayé d'obtenir un nombre entre 28 et 7
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Il serait préférable d'utiliser Random au lieu de Math.random. Random est plus efficace et moins biaisé.