Nombres aléatoires Java avec graine fixe : pourquoi des sorties identiques ?
Dans votre code, vous avez défini une méthode pour générer des nombres aléatoires en utilisant une graine spécifiée. Cependant, vous remarquez que lorsque vous fournissez la même graine, les 100 nombres générés sont identiques.
Ce comportement est attendu car l'utilisation de la même graine dans le constructeur Random entraîne une séquence prévisible de nombres. Une graine est une valeur de graine qui initialise le générateur de nombres aléatoires. Il s'agit d'une fonctionnalité importante pour les tests, car elle permet d'obtenir des résultats cohérents lors de la réexécution des tests.
Comprendre la génération de nombres pseudo-aléatoires
Générateurs de nombres pseudo-aléatoires (PRNG) comme Random en Java générer des séquences proches du véritable hasard. Cependant, ils ont un petit ensemble de valeurs initiales, y compris la graine, qui détermine complètement la séquence.
Fixation du code
Pour générer différentes séquences de nombres aléatoires, vous devriez éviter d’utiliser la même graine à chaque fois. Au lieu de cela, créez une instance Random en dehors de votre méthode et initialisez-la sans argument. Cette instance utilisera la méthode nanoTime pour générer une valeur de départ unique.
Voici le code corrigé :
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
Avec ce changement, vous obtiendrez différentes séquences de nombres aléatoires à chaque fois que vous appelez la méthode randomGenerator.
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!