web-dev-qa-db-fra.com

Comment obtenir un aléatoire entre 1 et 100 de randDouble en Java?

D'accord, je suis encore relativement nouveau en Java. Nous avons reçu une aide pour créer un jeu dans lequel vous devez deviner un entier aléatoire généré par l’ordinateur. Le problème est que notre conférencier insiste pour que nous utilisions:

double randNumber = Math.random();

Puis traduisez-le en un entier aléatoire de 1 à 100 inclus. Je suis un peu perdu. Ce que j'ai jusqu'ici est ceci:

//Create random number 0 - 99
double randNumber = Math.random();
d = randNumber * 100;

//Type cast double to int
int randomInt = (int)d;

Cependant, le problème persistant du double aléatoire est que 0 est une possibilité alors que 100 ne l’est pas. Je veux modifier cela pour que 0 ne soit pas une réponse possible et 100 si. Aidez-moi? 

11
George

Tu y es presque. Ajoutez simplement 1 au résultat:

int randomInt = (int)d + 1;

Cela "décalera" votre plage en 1 - 100 au lieu de 0 - 99.

15
Mysticial

ou

Random r = new Random();
int randomInt = r.nextInt(100) + 1;
14
MeBigFatGuy

Voici un moyen propre et efficace de le faire, avec des contrôles de gamme! Prendre plaisir.

public double randDouble(double bound1, double bound2) {
        //make sure bound2> bound1
        double min = Math.min(bound1, bound2);
        double max = Math.max(bound1, bound2);
        //math.random gives random number from 0 to 1
        return min + (Math.random() * (max - min));
    }

// Plus tard, il suffit d'appeler:

randDouble(1,100)
//example result:
//56.736451234
0
Stan Tatarnykov