web-dev-qa-db-fra.com

Java Générer un nombre aléatoire entre deux valeurs données

Je voudrais savoir comment générer un nombre aléatoire entre deux valeurs données.

Je suis capable de générer un nombre aléatoire avec les éléments suivants:

Random r = new Random();

for(int i = 0; i < a.length; i++){
    for(int j = 0; j < a[i].length; j++){
        a[i][j] = r.nextInt();
    }

}

Cependant, comment puis-je générer un nombre aléatoire compris entre 0 et 100 (inclus)?

126
MusTheDataGuy

Vous pouvez utiliser par exemple r.nextInt(101)

Pour un générique "entre deux chiffres", utilisez:

Random r = new Random();
int low = 10;
int high = 100;
int result = r.nextInt(high-low) + low;

Cela vous donne un nombre aléatoire compris entre 10 (inclus) et 100 (exclusif)

346
Erik

En supposant que la limite supérieure est la limite supérieure et que la limite inférieure est la limite inférieure, vous pouvez alors créer un nombre aléatoire, r, entre les deux limites, avec:

int r = (int) (Math.random() * (upper - lower)) + lower;
43
user2512642
int Random = (int)(Math.random()*100);

si vous devez générer plusieurs valeurs, utilisez simplement for for loop

 for (int i = 1; i <= 10 ; i++)
       {
        int Random = (int)(Math.random()*100);
        System.out.println(Random);
       }

Si vous souhaitez spécifier une plage plus décente, telle que 10 à 100 (les deux sont dans la plage)

donc le code serait:

   int Random =10 +  (int)(Math.random()*(91));
   /* int Random = (min.value ) + (int)(Math.random()* ( Max - Min + 1));
  *Where min is the smallest value You want to be the smallest number possible to       
  generate and Max is the biggest possible number to generate*/
8
Vytautas

Comme ça,

Random random = new Random();
int randomNumber = random.nextInt(upperBound - lowerBound) + lowerBound;
4
user2754122

Utilisez Random.nextInt (int) .

Dans votre cas, cela ressemblerait à quelque chose comme ça:

a[i][j] = r.nextInt(101);
2
MAK

On peut aussi essayer ci-dessous:

public class RandomInt { 
    public static void main(String[] args) { 

        int n1 = Integer.parseInt(args[0]);
        int n2 = Integer.parseInt(args[1]);
        double Random;

        if (n1 != n2)
        {
            if (n1 > n2)
            {
                Random = n2 + (Math.random() * (n1 - n2));
                System.out.println("Your random number is: " + Random);
            }
            else
            {
                Random = n1 + (Math.random() * (n2 - n1));   
                System.out.println("Your random number is: " +Random);
            }
        } else {
            System.out.println("Please provide valid Range " +n1+ " " +n2+ " are equal numbers." );
        }                     
    }
}
1
Sunil

Java n'a pas de générateur aléatoire entre deux valeurs de la même manière que Python. En réalité, il ne faut qu'une valeur pour générer le hasard. Ce que vous devez faire, alors, est d’ajouter UN CERTAIN NUMÉRO au nombre généré, ce qui fera que le nombre sera dans une plage. Par exemple:

package RandGen;

import Java.util.Random;

public class RandGen {


    public static Random numGen =new Random();

public static int RandNum(){
    int Rand = Math.abs((100)+numGen.nextInt(100));

    return Rand;
}

public static void main(String[]Args){
   System.out.println(RandNum());
}

}

La fonction de ce programme se trouve entièrement dans la ligne 6 (Celle commençant par "int Rand ...". Notez que Math.abs () convertit simplement le nombre en valeur absolue et qu'il est déclaré en tant qu'entier, ce n'est pas vraiment important. (100) est le nombre que j'ajoute au chiffre aléatoire, ce qui signifie que le nouveau nombre en sortie sera le nombre aléatoire + 100. numGen.nextInt () est la valeur du nombre aléatoire lui-même et (100) entre parenthèses, il s'agit d'un nombre compris entre 1 et 100. Ainsi, lorsque j'ajoute 100, il devient un nombre compris entre 101 et 200. Vous ne générez pas réellement un nombre compris entre 100 et 200, vous ajoutez à celui compris entre 1 et 100.

1
David Behrens