"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-09
Parcourir:103

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

Nombres aléatoires Java avec valeur de départ fixe : pourquoi des sorties identiques ?

Dans votre code, vous avez défini une méthode pour générer des nombres aléatoires à l'aide une graine spécifiée. Cependant, vous remarquez que lorsque vous fournissez la même valeur de départ, les 100 nombres générés sont identiques.

Ce comportement est attendu car l'utilisation de la même valeur de départ 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 appellerez la méthode randomGenerator.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3