En Java, la classe Random fournit un moyen de générer des nombres pseudo-aléatoires. En spécifiant une graine comme argument, il est possible de contrôler la séquence de nombres générés. Cependant, un problème survient lorsque la même graine est utilisée à plusieurs reprises, ce qui entraîne des séquences de nombres identiques.
Un générateur de nombres pseudo-aléatoires (PRNG) est un algorithme qui génère une séquence de nombres qui semble aléatoire mais qui est en réalité déterminée par un petit ensemble de valeurs initiales, connu sous le nom de graine. En spécifiant une graine, le PRNG produit à chaque fois la même séquence de nombres.
Pour résoudre le problème de sortie identique, il est nécessaire de comprendre le fonctionnement des graines dans les PRNG. En Java, lors de l'appel de la classe Random avec un argument seed, elle conserve le même état pour les appels futurs, conduisant à la même séquence de nombres.
Pour générer des séquences variées, il est recommandé d'appeler l'argument zéro constructeur de Random, qui utilise le système nanotime comme graine. Cela garantit qu'une graine différente est utilisée à chaque fois que la méthode est appelée.
Le code Java corrigé suivant utilise le constructeur sans argument pour générer différentes séquences de nombres aléatoires :
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
En déplaçant l'instance Random en dehors de la méthode et en utilisant le système nanotime comme graine, ce code élimine le problème d'une sortie identique et génère différentes séquences de nombres aléatoires.
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!