Maison > Java > javaDidacticiel > Pourquoi est-ce que j'obtiens des nombres aléatoires identiques lorsque j'utilise la même graine en Java ?

Pourquoi est-ce que j'obtiens des nombres aléatoires identiques lorsque j'utilise la même graine en Java ?

DDD
Libérer: 2024-11-09 14:53:02
original
643 Les gens l'ont consulté

Why do I get identical random numbers when using the same seed in Java?

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal