web-dev-qa-db-fra.com

Générer un double aléatoire dans une plage

J'ai deux doubles comme suit

double min = 100;
double max = 101;

et avec un générateur aléatoire, je dois créer une double valeur entre les plages min et max.

Random r = new Random();
r.nextDouble();

mais il n'y a rien ici où nous pouvons spécifier la plage.

121
swati

Pour générer une valeur aléatoire entre rangeMin et rangeMax:

Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
208
mob

Cette question avait été posée avant la version Java 7, mais il existe désormais une autre méthode possible d’utiliser l’API Java 7 (et les versions ultérieures):

double random = ThreadLocalRandom.current().nextDouble(min, max);

nextDouble retournera une double valeur pseudo-aléatoire entre le minimum (inclus) et le maximum (exclusif). Les limites ne sont pas nécessairement int et peuvent être double.

115
Tunaki

Utilisez ceci:

double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);

EDIT:

new Random().nextDouble(): génère de manière aléatoire un nombre compris entre 0 et 1.

start: numéro de début, pour décaler le numéro "à droite"

end - start: intervalle. Random vous donne de 0% à 100% de ce nombre, car random vous donne un nombre de 0 à 1.


EDIT 2: Tks @daniel et @aaa bbb. Ma première réponse était fausse.

37
Topera
import Java.util.Random;
    public class MyClass {
         public static void main(String args[]) {
          Double min = 0.0; //  Set To Your Desired Min Value
          Double max = 10.0; //    Set To Your Desired Max Value
          double x = (Math.random() * ((max - min) + 1)) + min; //    This Will Create 
          A Random Number Inbetween Your Min And Max.
          double xrounded = Math.round(x * 100.0) / 100.0; // Creates Answer To 
          The Nearest 100 th, You Can Modify This To Change How It Rounds.
          System.out.println(xrounded); //    This Will Now Print Out The 
          Rounded, Random Number.
         }
    }
3
Larson Carter
Random random = new Random();
double percent = 10.0; //10.0%
if (random.nextDouble() * 100D < percent) {
    //do
}
1
Tau