Générateur de nombres aléatoires Java avec graine fixe
Question :
En Java, lors de la configuration une graine pour un générateur de nombres aléatoires, pourquoi renvoie-t-elle toujours le même numéro lorsque j'appelle la méthode depuis un autre class?
Code :
public class Numbers { public int random(int i) { Random randnum = new Random(); randnum.setSeed(123456789); return randnum.nextInt(i); } }
Lorsque vous appelez number.random(10) plusieurs fois, il génère systématiquement la même valeur. Comment pouvons-nous modifier le code pour générer différents nombres aléatoires tout en conservant l'obligation de définir la graine ?
Réponse :
Pour garantir que différents nombres aléatoires sont générés, le L'instance aléatoire doit être partagée dans toute la classe plutôt que d'être recréée pour chaque appel de méthode. Ceci peut être réalisé grâce aux modifications suivantes :
public class Numbers { private Random randnum; // Declare the Random instance as a class variable public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
En initialisant l'instance randnum dans le constructeur de classe et en la rendant accessible via les méthodes de la classe, nous garantissons que le même objet Random est utilisé dans toute la classe, ce qui conduit à différents nombres aléatoires générés à chaque appel de méthode.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!