Malgré la définition de la graine de la classe Random avec une valeur spécifique, le générateur de nombres aléatoires renvoie systématiquement le même numéro. Explorons ce qui pourrait être à l'origine de ce problème.
La classe Java Random est conçue pour générer des nombres pseudo-aléatoires. Par défaut, il utilise son horloge interne comme valeur de départ, ce qui lui permet de générer une séquence de nombres relativement prévisible. Pour personnaliser la séquence, vous pouvez définir explicitement une graine à l'aide de la méthode setSeed().
La graine est une valeur numérique utilisée pour initialiser l'état interne du générateur de nombres aléatoires. Cet état détermine la séquence de nombres générés.
Dans le code fourni, vous créez une nouvelle instance de Random dans la méthode random(). Cela signifie que chaque fois que vous appelez random(), une nouvelle valeur de départ est définie, remplaçant ainsi la valeur de départ précédemment définie.
Pour résoudre ce problème, vous devez partager l'instance Random dans toute la classe. En créant une seule instance et en définissant la graine une fois lors de l'initialisation de la classe, vous vous assurez que la même séquence de nombres est générée de manière cohérente.
Le code mis à jour suivant résout le problème :
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
Dans ce code mis à jour :
En apportant ces modifications, vous obtiendrez désormais différents nombres aléatoires lors de l'appel de random() à partir de différents parties de votre programme, tout en respectant la valeur de départ spécifiée.
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!