Maison > Java > javaDidacticiel > Pourquoi mon générateur de nombres aléatoires Java renvoie-t-il le même nombre lorsqu'il est appelé depuis une autre classe ?

Pourquoi mon générateur de nombres aléatoires Java renvoie-t-il le même nombre lorsqu'il est appelé depuis une autre classe ?

DDD
Libérer: 2024-11-07 04:54:02
original
965 Les gens l'ont consulté

Why does my Java random number generator return the same number when called from another class?

Générateur de nombres aléatoires Java avec graine fixe

Question :

En Java, lors de la configuration une graine pour un générateur de nombres aléatoires, pourquoi renvoie-t-elle toujours le même numéro lorsque j'appelle la méthode depuis un autre class?

Code :

public class Numbers {
    public int random(int i) {
        Random randnum = new Random();
        randnum.setSeed(123456789);
        return randnum.nextInt(i);
    }
}
Copier après la connexion

Lorsque vous appelez number.random(10) plusieurs fois, il génère systématiquement la même valeur. Comment pouvons-nous modifier le code pour générer différents nombres aléatoires tout en conservant l'obligation de définir la graine ?

Réponse :

Pour garantir que différents nombres aléatoires sont générés, le L'instance aléatoire doit être partagée dans toute la classe plutôt que d'être recréée pour chaque appel de méthode. Ceci peut être réalisé grâce aux modifications suivantes :

public class Numbers {
    private Random randnum;  // Declare the Random instance as a class variable

    public Numbers() {
        randnum = new Random();
        randnum.setSeed(123456789);
    }

    public int random(int i) {
        return randnum.nextInt(i);
    }
}
Copier après la connexion

En initialisant l'instance randnum dans le constructeur de classe et en la rendant accessible via les méthodes de la classe, nous garantissons que le même objet Random est utilisé dans toute la classe, ce qui conduit à différents nombres aléatoires générés à chaque appel de méthode.

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