web-dev-qa-db-fra.com

Comment utilisez-vous math.random pour générer des ints aléatoires?

Comment utilisez-vous Math.random pour générer des ints aléatoires?

Mon code est:

int abc= (Math.random()*100);
System.out.println(abc);

Tout ce qu'il imprime est 0, comment puis-je résoudre ce problème?

14
Gworf Hi

Convertit abc en un entier.

(int)(Math.random()*100);
24
Russell

Pour que votre code soit compilé, vous devez convertir le résultat en int.

int abc = (int) (Math.random() * 100);

Cependant, si vous utilisez plutôt la méthode Java.util.Random class, elle a une méthode intégrée pour vous.

Random random = new Random();
int abc = random.nextInt(100);
18
Roger Lindsjö

Sinon, s'il n'y a pas de raison particulière d'utiliser Math.random(), utilisez Random.nextInt():

Random rnd = new Random();
int abc = rnd.nextInt(100); // +1 if you want 1-100, otherwise will be 0-99.
11
Dave Newton

vous importez le package Java.util. C'est pourquoi c'est donner une erreur. il y a aussi un paquet random() dans Java.util. Veuillez supprimer le package d'import Java.util de l'instruction d'importation. alors votre programme utilisera la méthode random() pour Java.lang par défaut et ensuite votre programme fonctionnera. rappelez-vous de le jeter i.e

int x = (int)(Math.random()*100);
0
user3260381
int abc= (Math.random()*100);//  wrong 

vous obtiendrez le message d'erreur ci-dessous

Exception dans le fil "principal" Java.lang.Error: compilation non résolue problème: incompatibilité de type: impossible de convertir de double en int

int abc= (int) (Math.random()*100);// add "(int)" data type

, dit moulage de type

si le vrai résultat est

int abc= (int) (Math.random()*1)=0.027475

Vous obtiendrez alors le résultat "0" car il s'agit d'un type de données entier.

int abc= (int) (Math.random()*100)=0.02745

sortie: 2 parce que (100 * 0.02745 = 2.7456 ... etc)

0
siva

Vous pouvez également utiliser cette méthode pour obtenir un nombre aléatoire compris entre 1 et 100, comme suit: 

SecureRandom src=new SecureRandom();
int random=1 + src.nextInt(100);
0
Muhammad Abdullah